将数字从网格导入2D Array Java

时间:2015-04-18 13:46:56

标签: java arrays

所以这里只是一个简单的问题,我已经完成了文件阅读的一些工作,但还不足以精通它。我有一个网格:

10 14 81 34 76

18 22 64 4  87

1  6  42 13 15

4  32 21 87 31

7  42 24 20 15

(只是一个示例网格)

我目前在文本文件中有它。如何在2D阵列上将每个数字输入到自己的位置,看起来很简单,但由于我的知识有限,我无法做到!

2 个答案:

答案 0 :(得分:1)

首先假设您知道尺寸。第一步是做文件阅读。创建缓冲区阅读器

BufferedReader br=new BufferedReader(new FileReader(path));

然后循环阅读这个阅读器

int[][] result=new int[rownum][columnnum];
int i =0;
While(br.ready()){
    String line=br.readline();
    String[] tokens=line.split(" ");
    // now put each in 2D array
   for(int j=0;j<tokens.length;j++){
        result[i][j]=Integer.parseInt(tokens[j]);
    }
    i ++;
}

如果您不知道大小,那么在该循环中放入ArrayList。然后使用toArray方法

答案 1 :(得分:1)

嗯,这很合乎逻辑。

让我们分析你的网格,

  1. 以空格分隔
  2. 将每一行视为一个二维数组的行。
  3. 这是一些代码,

        File file = new File("test.txt");
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        ArrayList<String> lines = new ArrayList<String>();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            lines.add(line);
        }
        fileReader.close();
    

    现在,ArrayList行包含文本文件中的所有行。你现在要做的就是用一个简单的for循环迭代它并提取值。

    String [] singleline = lines.get(0).split(" "); // this array contains all integers at line 0 .
    

    只需将其解析为整数值,然后以您喜欢的任何方式将其添加到2D数组中。

     ArrayList<Integer> singleLineIntegers = new ArrayList<Integer>();
     for(i=0;i<temp.length;i++)
     singleLineIntegers.add(Integer.parseInt(temp[i]));
    

    现在这个singleLineIntegers数组包含第1行中的所有整数,使用lines数组重复此操作并将其插入到2d数组中。