【发布时间】:2021-03-18 23:38:17
【问题描述】:
我正在尝试读取一个类似于此的文本文件:
0000000000
0000100000
0001001000
0000100000
0000000000
这是我的代码:
public static int[][] readBoard(String fileName) throws FileNotFoundException {
File life = new File(fileName);
Scanner s = new Scanner(life);
int row = s.nextInt();
int columns = s.nextInt();
int [][] size = new int [row][columns];
for (int i=0; i <= row; i++) {
String [] state = new String [columns];
String line = s.nextLine();
state = line.split("");
for (int j=0; i <= columns; i++) {
size[i][j] = Integer.parseInt(state[j]);
}
}
return size;
}
它一直给我这个错误。我认为是Integer.parseInt(state[j]) 给我带来了麻烦,但我不知道为什么。
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Project5.readBoard(Project5.java:33)
at Project5.main(Project5.java:9)
【问题讨论】:
-
它说你的字符串是空的。您是否在代码中添加了任何 System.out.println(...) 语句以查看:1)“line”变量的值是什么,2)“state[j]”的值是什么?这是基本调试。
-
您以错误的方式使用 Scanner 对象来获取列数和行数。您必须逐行读取文件以获得必要的行数和列数。因此使用 ArrayList 而不是 Array,因为使用 ArrayList 您可以动态追加项目。