我正在尝试使用从文件输入的数据来填充字符数组,而在解析文件时我也试图存储一些值,但是事情不起作用。
这是我的代码:
File file = new File(filename); // filename is a user input
Scanner fileScan = new Scanner(file);
// determine the board size
ROWS = fileScan.nextInt();
COLS = fileScan.nextInt();
fileScan.nextLine();
char[][] board = new char[ROWS][COLS];
for( int row = 0; row < board.length; row++){
for (int col = 0; col < board[row].length ; col++){
if (fileScan.hasNext()) {
board[row][col]= fileScan.next().charAt(0);
if(board[row][col] == START){
startingPoint = new Point(row, col);
}
if(board[row][col] == END){
endingPoint = new Point(row, col);
}
}
}
}
}
鉴于此输入文件已
2 2
1 O O
O O O
O X 2
这是我运行时得到的(当我尝试打印数组时):
O O
O X
java.lang.NullPointerException
at java.awt.Point.<init>(Unknown Source)
at CircuitBoard.getStartingPoint(CircuitBoard.java:139)
at CircuitTracer.<init>(CircuitTracer.java:120)
at CircuitTracer.main(CircuitTracer.java:36)
阻止我获取startingPoint值的错误是什么?
答案 0 :(得分:0)
好吧,我试过运行代码:
考虑我对数据大小2x2 --> 3x3
它运作正常
文件应为
3 3
1 O O
O O O
O X 2
阅读代码很好, 这是我使用的阵列打印代码
for( int row = 0; row < board.length; row++){
for (int col = 0; col < board[row].length ; col++){
System.out.print(board[row][col] + " ");
}
System.out.println("");
}
这是输出:
1 O O
O O O
O X 2
所以,如果这是你需要的,只需将文件中的第一行更改为3 3
并使用本答案中的打印代码