2014-02-24 96 views
-1

我写了这个方法,将一个对象添加到阵列 ,但它让我这个错误Java错误显示java.lang.NullPointerException

Exception in thread "main" java.lang.NullPointerException 

我检查所有的变量,我认为没有什么空:((

这是我的add方法

} 
} 

错误是在add_b()方法

Exception in thread "main" java.lang.NullPointerException 
    at Kindergarten.add_b(Kindergarten.java:39) 
    at ClientClass.main(ClientClass.java:22) 
+0

粘贴堆栈跟踪。 – Pankaj

+2

您需要(1)向我们展示所有代码,而不仅仅是您认为问题可能出现的部分(2)告诉我们在堆栈跟踪中实际提及哪条线,因此我们不必猜测。没有这些东西,没有人可以帮助你。 –

+0

@DavidWallace我很抱歉,这是我第一次问这里,我编辑它,你能帮助我吗? :( –

回答

1

您有错误幼儿园的构造函数,而不是初始化改编,要创建局部变量,它应该是这样的:

public Kindergarten(String name, int numOfbaby) { 
    this.name = name; 
    arr = new BABY[numOfbaby]; 
    currnt = 0; 
} 

其次,你有一个ininite循环,移动指令输入的阅读进入循环。

另一个问题是,你有无效的格式参数,只需使用普通的串联

最后,但并非最不重要,你在display_all方法缺少System.out.println

循环应该这样开始:

所有的
Kindergarten k = new Kindergarten("baby", 10); 

while (true) { 
    System.out 
      .println("what do you want to do? \n a-add a baby. \n b-search for a baby \n c-Delet a baby. \n d-Display all babys.\n e-how many babys need inoculation \n f-exit"); 
    char f = read.next().charAt(0); 
//(...) 
} 
+0

另一个问题是,在主要的'BABY'是用'null'年龄创建的,然后在'Kindergarten.add_b(BABY)'中使用了copy-constructor,它试图检索th从婴儿开始。 – gla3dr

+0

@ gla3dr实际上,年龄不是'null',只是'0',但我想这也应该在创作过程中加以说明。 –

+0

@endriu_l请您澄清一下“将指令和输入读入循环。”我不好英文对不起<是的,现在我有无限循环。你的意思是我删除while循环? –

0

一是arr初始化只发生在第二幼儿园构造函数。 在第一个幼儿园构造函数中,arr是一个局部变量。 BABY arr[]=new BABY[numOfbaby];

此外,像setarr,未被使用setnamesetcurrnt方法。如果不使用,清理它们会很好。

+0

是的,我知道我不使用它,但这是一个家庭作业,他们要求我们这样做,非常感谢你 –

相关问题