2013-05-12 47 views
1

没有通过攻击和小姐的攻击地点。得到一个输出结果是不正确的。 Iam使用网格类的位置接口用于船级并且没有船级。具有只是实现了船舶类,并没有船class.How调试在正确的输出Java程序在下面的一段代码中传递NullpointerException

+0

Javascript代码去除出现这个问题与Javascript编程语言无关。代码格式更好。 – 2013-05-12 16:01:29

+1

这几乎肯定是因为'grid [i] [j] == null'。 – 2013-05-12 16:02:23

+0

您的NoShip类看起来有点凌乱,例如attack()将命中设置为true,但然后返回isShip,这是false。如果你也打电话给wasHit(),而没有设置“hit”到任何东西,那么它会抛出空指针,因为你没有设置hit为任何值 – Rogue 2013-05-12 16:03:29

回答

6

注意hit不是booleanBoolean对象,从来没有初始化的位置接口

荫,所以它是null。在autounboxing,它不能被转换为boolean,所以NullPointerException被抛出。

详情请参阅here

+0

谢谢你让我知道。我已经初始化布尔值为真实的船类和假的没有船级,但在输出,而不是显示X的命中和0错过它显示X的所有原始船舶的地方。 – jill 2013-05-12 16:33:46

+0

原始问题解决?对不起,但我不完全明白你在问什么,如果你另外提出一个问题,如果确实是另一个问题,你可能会有更好的机会(所以你可以更好地解释它)。 – 2013-05-12 16:36:22

+0

我想表示遗漏0,在grid中由X命中。我有一个位置接口,实现了船和NoShip类。我使用if(grid [i] [j] .wasHit()&& grid [i] [j] .isShip()){System.out.print(“X”); }否则如果(!网格[i] [j] .wasHit()&&网格[i] [j] .isShip()){ 是System.out.print( “0”); } else { System.out.print(“ - ”); – jill 2013-05-12 16:45:28

0
I would like to know why we get NullpointerException and how to debug this code 
to have it working.

好,NullPointerException扔在NoShip.java:30,检查这一点,你必须初始化打 或更改Booleanboolean,如果没有初始化,那么返回null,抛出NullPointerException

+0

我想表示遗漏0,在grid中由X命中。我有一个位置接口来实现ship和noShip类。我使用if(grid [i] [j] .wasHit()&& grid [i] [j] .isShip()){System.out.print(“X”); }否则如果(!网格[i] [j] .wasHit()&&网格[i] [j] .isShip()){ 是System.out.print( “0”); } else { System.out.print(“ - ”);公共类船舶实现位置{ \t public boolean isShip(){ return true;/* true it has been hit ye​​t */ } 是否正确? – jill 2013-05-12 16:52:14

+0

你可以调试到有效的正确 – duplicatedcode 2013-05-12 17:08:49

相关问题