【问题标题】:How do I read a file of strings into a 2d array如何将字符串文件读入二维数组
【发布时间】:2016-04-28 04:17:12
【问题描述】:

我正在读取的文件有 40 不同的字符串,我想把它放在一个大小为 [10][4] 的 2d-array 中。

到目前为止的代码

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

【问题讨论】:

    标签: java arrays multidimensional-array bufferedreader filereader


    【解决方案1】:

    假设金额是可控的,那么您需要为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 中,在执行此 循环之前可以拆分和验证强>.

    【讨论】:

      【解决方案2】:

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

       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();
              } 
      }
      }
      

      【讨论】:

        【解决方案3】:

        你有两个选择,一个是上面描述的可怕袋熊。

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

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

        【讨论】:

          猜你喜欢
          • 2016-01-17
          • 2020-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-23
          • 1970-01-01
          • 2013-10-12
          相关资源
          最近更新 更多