2016-04-01 5 views
0

このPersonクラスには、友人の追加、削除、表示のためのいくつかのメソッドがあります。何らかの理由で、友人を見たいときは、適切なメソッドを正しい方法で呼び出すと思っていますが、最後の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'は、そのクラスで作成されたすべてのインスタンスで同じことを意味します。 – 3kings

+0

メイン以外のすべての静的を削除します。静的フィールドは一度だけ存在し、クラスオブジェクトのフィールドであり、 '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 String name; 
private String friends; 

private static String name; 
private static String friends; 

を作成し、彼らは `それを削除してみてくださいstatic`されているので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

はい私は編集していた –

関連する問題