2014-12-04 51 views
0

自从几个小时以来一直在解决这个问题。包括通过回答以前的问题。 (我真的是新的Java,几天前基本开始)Nullpointerexception并没有编译错误。找不到原因

它一直给我NullpointerException s在之间的第一类和hundRegister.add(nyHund);在第二类。

我不知道是什么可能导致他们。有人有想法吗?

代码的目的(完成时)是将第三个类的对象添加到第二个类的列表中,并使用firstclass作为“主程序”。

感谢您的帮助! 奥斯卡

头等舱(主)

public class testning { 

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

    } 

} 

二等:

import java.util.ArrayList; 

public class Register { 


    private static ArrayList<Hund> hundRegister; 



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



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


} 

三等

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 ("tax".equals(ras)){ 
      return 3.7; 
     }else{ 
      return ((vikt*ålder)/10); 
     } 
    } 

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

你给了我们所有的代码,但没有异常堆栈跟踪。异常堆栈跟踪是诊断问题的关键。 – 2014-12-04 23:32:56

+0

我不认为重复是非常有帮助的。他所要做的就是改变私人静态ArrayList hundRegister;'到'私人静态ArrayList hundRegister =新ArrayList ();' – August 2014-12-04 23:33:58

+0

正如我所说,这是非常新的。但这是你需要的吗? 异常在线程 “主” 显示java.lang.NullPointerException \t在Register.läggTillHund(Register.java:11)​​ \t在testning.main(testning.java:8) – Oskar 2014-12-04 23:35:00

回答

0

您正在访问的静态方法。在这种情况下,构造函数从不工作。使用private static ArrayList<Hund> hundRegister = new Arraylist<>() ;并删除构造函数。要看看发生了什么,添加System.out.println行来构建,你会发现它永远不会工作

+0

@八月抱歉。我正在使用android应用程序,并发布两次错误。 – 2014-12-04 23:45:37