2016-04-01 37 views
0

我有这个人类与一些方法来添加,删除和查看你的朋友。出于某种原因,当我想要查看我的朋友时,尽管我认为我以正确的方式调用了正确的方法,但无论方法调用中的对象规范如何,都会打印最后一个Person对象(它是carl)。问题是什么?正在打印的最后一个对象无论如何

这里是代码:

package person; 

public class Person { 
    private static String name; 
    private static String friends; 

    public static void main(String[] args) { 

     Person ted = new Person ("ted"); 
     Person jim = new Person ("jim"); 
     Person todd = new Person ("todd"); 
     Person tom = new Person ("tom"); 
     Person carl = new Person ("carl"); 

     // apparently I'm making a mistake here... 
     jim.addFriend(zack); 
     System.out.println(jim.getFriends()); 
    } 
    public Person (String aName) { 
     name = aName; 
     friends = ""; 
    } 
    public static void addFriend(Person friend) { 

     friends = friends + friend.name + " "; 
    } 
    public static void unFriend (Person nonFriend) { 
     friends = friends.replace(nonFriend.name + " ", ""); 
    } 
    public static String getFriends() { 
     return friends; 
    } 

} 
+0

改变方法,因为他们是'static'尝试移除。 'Static'几乎意味着对于该类创建的所有实例都是一样的。 – 3kings

+0

删除除main之外的所有静态。一个静态字段将只存在一次,是类对象的字段,并且可以执行'Person.name =“any”;' –

+0

谢谢!那是它 – zamzam

回答

3

您正在使用静态变量。请试试这个。

package person; 

public class Person { 
    private String name; 
    private String friends; 

    public static void main(String[] args) { 

     Person ted = new Person ("ted"); 
     Person jim = new Person ("jim"); 
     Person todd = new Person ("todd"); 
     Person tom = new Person ("tom"); 
     Person carl = new Person ("carl"); 

     // apparently I'm making a mistake here... 
     jim.addFriend(zack); 
     System.out.println(jim.getFriends()); 
    } 
    public Person (String aName) { 
     name = aName; 
     friends = ""; 
    } 
    public void addFriend(Person friend) { 

     friends = friends + friend.name + " "; 
    } 
    public void unFriend (Person nonFriend) { 
     friends = friends.replace(nonFriend.name + " ", ""); 
    } 
    public String getFriends() { 
     return friends; 
    } 

} 
0

private static String name; 
private static String friends; 

private String name; 
private String friends; 

,并通过去除static

public void addFriend(Person friend) { 

     friends = friends + friend.name + " "; 
    } 
    public void unFriend (Person nonFriend) { 
     friends = friends.replace(nonFriend.name + " ", ""); 
    } 
    public String getFriends() { 
     return friends; 
    } 
+0

是的,我正在编辑 –