Java 如何调试NullPointerException?
我试图把船放在一个基于控制台的棋盘游戏上,我有以下错误,不知道如何调试它们 线程“main”java.lang.NullPointerException中出现异常 在NavalBattle.Board.print(Board.java:570) 在NavalBattle.Board.placeships1(Board.java:267) 在NavalBattle.Board.(Board.java:61) 位于NavalBattle.Controller.start(Controller.java:29) 位于NavalBattle.Controller.main(Controller.java:21) 第570行是value=this.ships2[row][col].toString()Java 如何调试NullPointerException?,java,Java,我试图把船放在一个基于控制台的棋盘游戏上,我有以下错误,不知道如何调试它们 线程“main”java.lang.NullPointerException中出现异常 在NavalBattle.Board.print(Board.java:570) 在NavalBattle.Board.placeships1(Board.java:267) 在NavalBattle.Board.(Board.java:61) 位于NavalBattle.Controller.start(Controller.jav
//板类
导入java.util.ArrayList;
导入java.util.Scanner;
公共班级委员会{
int x=0;
int y=0;
ArrayList player1=新的ArrayList();
ArrayList player2=新的ArrayList();
/**
*击中船只的射击次数
*/
私人整数命中率;
/**
*跟踪已被攻击的板的位置
*/
私有布尔[][]位置firedupon;
/**
*跟踪游戏中的船只
*/
私人船舶[][]艘船舶;
私人船舶[][]船舶2;
私人船舶【】【】船舶管理;
/**
*沉船的数量
*/
私人国际航运银行;
/**
*射击次数
*/
私人内部拍摄;
/**
*构造函数。初始化内部计数器并填充游戏
*用随机放置的船只登船。
*/
公共委员会(){
这个.hitCount=0;
this.shipsunk=0;
this.shotsFired=0;
董事会();
this.ships=新船[6][9];
this.ships2=新船[6][9];
this.locationsFiredUpon=新布尔值[6][9];
for(int row=0;row 对于(int i=0;i调试NullPointerException的最佳方法是查看堆栈跟踪的第一行,即:
NavalBattle.Board.print(Board.java:570)
这意味着错误发生在Board.java文件的第570行。您应该转到文件中的这一行,查看该行中哪些变量可以为null
第570行是value=this.ships2[row][col].toString();
。在这一行中,只有3项内容可以为null:
this.ships2
`这是第2页[世界其他地区]
`本文件第2页[行][列]
如果无法立即看到其中哪一个为空,请使用IDE在那里设置断点并以调试模式启动程序。当IDE在该行停止时,请为上述3个表达式中的每一个创建“监视表达式”,或使用“计算表达式”功能。其中一个表达式应为空
没有调试,我只能猜测,但我想我可以做出很好的猜测。this.ship2
不太可能为空,因为我可以看到您在代码中对其进行了初始化。我也不认为这个。ships2[row]为空-我认为您在构造函数中正确地初始化了2D数组。因此,我认为是这个。ships2[row][col]这是null,在null上调用toString()会抛出NPE。为了证实我的理论,您可以将该行替换为:
value = String.valueOf(this.ships2[row][col]);
调试NullPointerException的最佳方法是查看堆栈跟踪的第一行,即:
NavalBattle.Board.print(Board.java:570)
这意味着错误发生在Board.java文件的第570行。您应该转到文件中的这一行,查看该行中哪些变量可以为null
第570行是value=this.ships2[row][col].toString();
。在这一行中,只有3项内容可以为null:
this.ships2
`这个
value = String.valueOf(this.ships2[row][col]);