我的代码就像这样
import java.io.File;
import java.util.Scanner;
public class ReadFile{
public static void main(String[] args)throws Exception {
Scanner scan = new Scanner(new File("input.txt"));
int[][] arr = new int[4][4];
for(int t = 1; t <= 2; t++){
int firstRow = scan.nextInt();
System.out.println(firstRow);
for(int i = 0; i <= 4; i++){
if(scan.hasNextLine()){
String[] splited = scan.nextLine().split("\\s");
for(String f : splited)
System.out.println(f);
for(int g = 0; g <= 4; g++){
arr[i][g] = Integer.parseInt(splited[i]); // at this point the exception is being thrown
}
}
}
}
}
我正在尝试读取具有以下格式排列的数据的文件
2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
3
1 2 5 4
3 11 6 15
9 10 7 12
13 14 8 16
基本上我想要读取第一个数字2(一行中的单个值)和3(再次从顶部第6行中的单个值)并将它们存储在firstRowNum变量和secondNumRow变量中,其余数字存储在两个4X4中矩阵。 但是当我运行代码时,我得到以下异常
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at ReadFile.main(ReadFile.java:20)
我想我没有正确设置循环。
由于
答案 0 :(得分:3)
替换
splited[i]
与
f
作为Integer.parseInt()
的参数。另外,不要为g
索引使用另一个循环;使用
arr[i][g++]
并在每个循环的内部之前将g初始化为0。或者,按原样使用基于g的循环,但将splited[i]
替换为splited[g]
。
您还有其他问题,例如使用
i <= 4
作为循环的上限条件,但是你的数组的索引范围从0到3(应该使用i < 4
)。
答案 1 :(得分:1)