java - 将文件读入二维数组

标签 java java-io

我正在尝试将文件读入二维数组。 当我读到第一部分中的值时,这些值是正确的。 当我写出来时,这些值都是“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 个循环,并计算 ij 应该是什么:

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/

相关文章:

java - 如何确定MINA中的服务器端口

java - 在给定其他先验概率的情况下估计概率

java - 如何计算具有特定术语/单词的数组列表的元素数量?

java - 如何将方法标记为 "afterwards, parameter X cannot be null"?

java - 如何读取编码未知的文本文件?

java - 连续编辑一个 1MB 的文件,怎样才更有效率?

java - java gc.log 的成本时间含义?

java - 使用 stORM 或替代方法使用外键进行 Android SQLite 查询

java - DataOutputStream.write(byte b[], int off, int len) 不抛出异常

java - 使用正则表达式显示目录列表