如何将字符串文件读入二维数组

时间:2016-04-28 04:17:13

标签: java arrays multidimensional-array bufferedreader filereader

我正在阅读的文件包含40个不同的字符串,我想将其放在2d-array中,其大小为[10][4]

到目前为止的

代码

public class GetAnswers {

    public static void main(String[] args) {

        try (BufferedReader br = new BufferedReader(new FileReader("Answers.txt")))
        {
            String [][] answers;
            answers = new String[10][4];
            String line;
            int i = 0;
            String [] temp;
            while ((line = br.readLine()) != null) {
                temp = line.split("\n");
                for (int j = 0; j < answers[i].length; j++)
                    {
                        answers[i][j] = temp[j];
                        System.out.println(j);
                    }
                i++;
            }
            //System.out.println(answers[1][2]);
        } catch (IOException e) {
            e.printStackTrace();
        } 

文本文件格式:

apple 
orange 
dog
cat

3 个答案:

答案 0 :(得分:2)

假设金额受到控制,那么您需要为temp创建一个单独的索引,并且还有一个内部for循环

int x = 0;

for (int i = 0; i < 10; i++) {   // outer
   for (int y = 0; y < 4; y++) {  // inner
      answers [i][j] = temp[x++];
   }
}

但在此之前我会阅读所有行并将它们放在一个StringBuilder中,在执行此循环之前,可以拆分验证

答案 1 :(得分:1)

你有两个选择,一个是Scary Wombat在那里描述的。

第二个是您可以创建一维数组,并将其视为二维数组。

answers = new int[40];
for (int i = 0; i < 10; i++) {
  for (int j = 0; j < 4; j++) {
    answers [i*10 + j] = temp[x++];
  }
}

答案 2 :(得分:1)

  

我认为最有效的答案。在这里你找到了

 import java.io.*;
 public class GetAnswers {

    public static void main(String[] args) {

        try (BufferedReader br = new BufferedReader(new 

FileReader("GetAnswers.txt")))
        {
            String [][] answers;
            answers = new String[10][4];
            String line;
            int i = 0;
            String [] temp = new String [40];
            while ((line = br.readLine()) != null) {
              temp[i++] = line;
            }

            for(int j=0; j<temp.length; j++){
                  answers[j/4][j%4] = temp[j];
                   System.out.println(answers[j/4][j%4]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
}
}