Java 正在尝试读取data.txt文件并进行计算
我正在使用Java 正在尝试读取data.txt文件并进行计算,java,bufferedreader,filereader,Java,Bufferedreader,Filereader,我正在使用Integer.parseInt()将data.txt的每一行的字符串变量更改为int数据类型。data.txt文件如下所示: 5 6 3 5 0 ……等等。我在文本文件中也没有空格,所以我应该能够完美地解析每一行的字符串。我在文本文件的结尾或开头也没有额外的空行。这是错误消息: Exception in thread "main" java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Unkn
Integer.parseInt()
将data.txt的每一行的字符串变量更改为int数据类型。data.txt文件如下所示:
5
6
3
5
0
……等等。我在文本文件中也没有空格,所以我应该能够完美地解析每一行的字符串。我在文本文件的结尾或开头也没有额外的空行。这是错误消息:
Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
以及守则:
public static int[][][] readFile() throws IOException{
int[][][] hero = new int[2][2][9];
try(BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
String line = br.readLine();
int num;
while (line != null) {
for (int i=0;i<2;i++){
for (int j=0;j<2;j++){
for (int k=0;k<9;k++){
line = br.readLine();
num = Integer.parseInt(line);
hero[i][j][k] = num;
}
}
}
}
}
return hero;
}
publicstaticint[]readFile()引发IOException{
int[]hero=新int[2][2][9];
try(BufferedReader br=newbufferedreader(newfilereader(“data.txt”)){
String line=br.readLine();
int-num;
while(行!=null){
for(int i=0;inull
在文件末尾提供。当检测到时,应中断循环:
line = br.readLine();
if (line == null) break;
我很容易就发现了这个bug,当你得到NullPointerException时,总是在控制台中打印出来,然后再对它做一些事情,只是为了确保。我刚刚在Integer.parseInt()之前添加了System.out.println(line)
,记住要这样做,这将使您的生活在未来变得更加轻松。您的data.txt上有5行,并且您正在阅读新行37次(循环前一次,三个循环中36行),因此将变为空。正如robert所述,您应该使用break或设置来中断循环,更改代码的执行顺序。此外,您的第一个读取行没有分配给num变量。请尝试更改为:
try(BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
String line = br.readLine();
int num;
while (line != null) {
for (int i=0;i<2;i++){
for (int j=0;j<2;j++){
for (int k=0;k<9;k++){
if(line==null){
k=9;
}
num = Integer.parseInt(line);
line = br.readLine();
hero[i][j][k] = num;
}
}
}
}
}
try(BufferedReader br=new BufferedReader(new FileReader(“data.txt”)){
String line=br.readLine();
int-num;
while(行!=null){
对于(int i=0;i