2014-12-04 16 views
-1

我試圖添加一個在不同類中創建的狗(nyHund)到我在另一個類中使用構造函數創建的Arraylist,但每當我嘗試使用Arraylist在「註冊「類,即時獲取無法解析數組名稱的錯誤。如何在不同的類上使用Arraylist

第一類:

public class Hund { 

    private String namn; 
    private int ålder; 
    private double vikt; 
    private String ras; 

    public Hund(String hundnamn, int hundålder, String hundras, double hundvikt) { 
     this.namn = hundnamn; 
     this.ålder = hundålder; 
     this.ras = hundras; 
     this.vikt = hundvikt; 
    } 

    public String getNamn() { 
     return namn; 
    } 

    public int getÅlder() { 
     return ålder; 
    } 

    public double getSvanslängd() { 
     if (ras=="tax"){ 
      return 3.7; 
     }else{ 
      return ((vikt*ålder)/10); 
     } 
    } 

    public String toString() { 
     return namn + "\n" + ålder + "\n"+ras+"\n"+vikt+"\n"+getSvanslängd(); 
    } 
} 

二等

import java.util.ArrayList; 
public class testning { 

    public static void main(String[] args) { 
     Hund nyHund = new Hund("Daisy", 13, "labrador", 22.3); 
     System.out.println(nyHund.toString()); 
     Register.läggTillHund(nyHund); 



    } 

} 

和第三類:

import java.util.ArrayList; 

public class Register { 



    public static void läggTillHund(Hund nyHund){ 
     hundRegister.add(nyHund); 
     System.out.println(nyHund); 



    } 



    private Register(){ 
     ArrayList<Hund> hundRegister = new ArrayList<Hund>(); 
    } 


} 

我遇到的問題是 「hundRegister.add(nyHund)」

任何想法?或指針哪裏會出錯? (在Java的很新)

問候 奧斯卡

回答

3

ArrayList您創建是您的本地Register構造。在類的內部聲明它,但在構造函數之外聲明它作爲一個實例變量,所以它在整個類的範圍內。

public class Register { 
    private ArrayList<Hund> hundRegister; 
    private Register(){ 
     hundRegister = new ArrayList<Hund>(); 
    } 
} 

此外,目前還不清楚爲什麼構造函數是private。沒有其他人可以訪問該構造函數。我會讓它public

另外,在getSvanslängd中,將ras=="tax"替換爲"tax".equals(ras)。見How do I compare strings in Java?

+0

謝謝!對我來說,這是一個恥辱的時刻;)當我看到答案時非常明顯) – Oskar 2014-12-04 19:54:25

+0

拋出一個NullpointerException,但現在沒有編譯錯誤。我猜我有更多的疑難解答來做xD – Oskar 2014-12-04 20:05:18