2017-03-02 26 views
0

我正在做一個類來處理使用ArrayList的朋友列表場景,我不知道我做錯了什麼。在我調用addFriend方法的那一刻,發生了「java.lang.NullPointerException」,我似乎無法排除發生這種情況的原因。請給我一些正確方向的提示!爲什麼我會得到「java.lang.NullPointerException」w/my ArrayList?

public class Person { 
    private String name; 
    private ArrayList<String> friends; 


    public Person(String name) { 
     this.name = name; 
     this.friends = friends; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void addFriend(String friend) { 
     friends.add(friend);  
    } 

    public boolean hasFriend(String name) { 
     for(String friend : this.friends) { 
      if(name.equals(friend)) { 
       return true; 
      } 
     } 
    return false; 
    } 

    public String getFriends() { 
     String stringOfFriends=friends.toString(); 
     return stringOfFriends; 
    } 

    public String unfriend(String friend) { 
     if (friends.contains(friend)) { 
      friends.remove(friend); 
     } 
    return friends.toString();  
    } 



} 

回答

0

你的構造具有initialze ArrayList中:

public Person(String name) { 
    this.name = name; 
    this.friends = new ArrayList<String>(); 
} 

在當前的版本中,您分配ArrayList的 「朋友」 本身。這意味着你基本上調用this.frinds = this.friends,並且this.friends尚未初始化,因此NullpointerException。

+0

哇!這使得更有意義。非常感謝!!! – hattic

+0

接受我的awnser會很好;) – Schlangguru

+0

我該怎麼做? – hattic

0

在你的構造this.friends = friends; doesn't make sense.作出這樣

public Person(String name,ArrayList<String> friends) { 
    this.name = name; 
    this.friends = friends; 
} 

然後通過實際的數組列表來構造。

+0

感謝您的理解! – hattic

0

您需要初始化您的數組列表。像private ArrayList<String> friends = new ArrayList<String>();或在構造函數如下:

public Person(String name) { this.name = name; this.friends = new ArrayList<String>(); }

相關問題