我已经完成了以前的答案,但没有像我想要的那样,特别是在java中。这是我的代码,我的代码块只能读取单个字符整数,这不是我打算做的,我打算读取多个char整数,它不起作用。我希望从文件中只读取16行和16个整数,即使文件包含超过16行和每行超过16个整数。有人可以和我分享一个想法吗?
以下是示例输入数据:
13 20 0 0 0 0 0 0 0 0 0 0 11 2
0 0 0 0 0 0 0 0 0 4 5 0 0 11 2
0 0 0 0 0 0 0 0 0 333 4 0 0 0 0
0 0 0 0 0 0 0 0 0 9 10 41 3 5 8
0 0 0 0 0 0 0 0 0 0 11 2 333 4
13 20 0 0 0 0 0 0 0 0 0 0 11 2
0 0 0 0 0 0 0 0 0 4 5 0 0 11 2
0 0 0 0 0 0 0 0 0 333 4 0 0 0 0
0 0 0 0 0 0 0 0 0 9 10 41 3 5 8
0 0 0 0 0 0 0 0 0 0 11 2 333 4
13 20 0 0 0 0 0 0 0 0 0 0 11 2
0 0 0 0 0 0 0 0 0 4 5 0 0 11 2
0 0 0 0 0 0 0 0 0 333 4 0 0 0 0
0 0 0 0 0 0 0 0 0 9 10 41 3 5 8
0 0 0 0 0 0 0 0 0 0 11 2 333 4
13 20 0 0 0 0 0 0 0 0 0 0 11 2
0 0 0 0 0 0 0 0 0 4 5 0 0 11 2
0 0 0 0 0 0 0 0 0 333 4 0 0 0 0
0 0 0 0 0 0 0 0 0 9 10 41 3 5 8
0 0 0 0 0 0 0 0 0 0 11 2 333 4
我只想把它插入到2dimentional数组中,你可以在我的代码中看到,但是我的数组是16X16,但是文件的大小可能超过16x16,但我只想读取16x16,即使文件包含的数量超过16x16,即使它存在,也忽略空行。
BufferedReader bufferedReader = new BufferedReader(new FileReader("text.txt"));
String line = null;
int[][] board = new int[16][16];
int k = 0;
while((line = bufferedReader.readLine())!=null) {
String[] newmatrix = line.split(" ");
for(int i=0; i<9; i++) {
board[k][i] = Integer.parseInt(newmatrix[i]);
}
k++;
}
这似乎是“学习练习”。所以,仅提示/建议1:
Scanner
(hasNextInt()
和nextInt()
来处理每一行。9
那样,你似乎已经把它拉出来了。board.length - 1
或board[i].length - 1
作为数组边界。 (见前)另外......你的输入文件似乎每行只有14个整数,而不是16个问题。
1 ...因为您将通过自己编码来了解更多信息。
下面的代码应该有效。
BufferedReader bufferedReader = new BufferedReader(new FileReader("text.txt"));
String line = null;
int[][] board = new int[16][16];
int k = 0;
while((line = bufferedReader.readLine())!=null) {
String[] newmatrix = line.split(" ");
for(int i = 0; i < 16; i++) {
board[k][i] = Integer.parseInt(newmatrix[i]);
}
k++;
if (k == 16)
break;
}
bufferedReader.close();