如何在java中插入2dimentional数组之前限制从文件读取的字符和行数

问题描述 投票:0回答:2

我已经完成了以前的答案,但没有像我想要的那样,特别是在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++;
 } 
java arrays
2个回答
0
投票

这似乎是“学习练习”。所以,仅提示/建议1:

  1. 要在16行后停止阅读,请使用计数器。
  2. 通过测试空行来跳过空行。
  3. 使用ScannerhasNextInt()nextInt()来处理每一行。
  4. 最好避免将字面常量硬连接到代码中......就像9那样,你似乎已经把它拉出来了。
  5. 在“循环”时使用board.length - 1board[i].length - 1作为数组边界。 (见前)

另外......你的输入文件似乎每行只有14个整数,而不是16个问题。


1 ...因为您将通过自己编码来了解更多信息。


-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();
© www.soinside.com 2019 - 2024. All rights reserved.