我正在尝试将文件读入二维数组。 当我读到第一部分中的值时,这些值是正确的。 当我写出来时,这些值都是“10”。 我该如何解决这个问题?
public static void readagain() {
try {
InputStream is = new FileInputStream("C:\\test.new");
int m = 16;
int n = 16;
int[][] a = new int[m][n];
int value=0;
while ((value = is.read()) != -1) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
try{
a[i][j] = value;
System.out.println("number is "+ a[i][j]);
}
catch (Exception e) {
e.printStackTrace();
}
}//j
} //i
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.println("number is "+a[i][j]);
}
}
}
catch (Exception e) {
e.printStackTrace();
}
}
最佳答案
您的第一个循环看起来会用最后一个值填充整个数组,并且它们都是相同的。
似乎正在发生的事情是,您获取一个又一个值,然后每次都覆盖数组中的所有值。
我建议只使用 1 个循环,并计算 i
和 j
应该是什么:
for( int x=0-; (value = is.read()) != -1) && x < m*n; x++) {
int i = x/n;
int j = x%n;
try{
a[i][j] = value;
System.out.println("number is "+ a[i][j]);
}
catch (Exception e) {
e.printStackTrace();
}
}
关于java - 将文件读入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368196/