Java文件到2D数组

时间:2015-01-31 22:15:50

标签: java arrays

我正在尝试从.txt文件创建一个2D数组,其中.txt文件如下所示:

xxxx            
xxxx                 
xxxx                 
xxxx                

或类似的东西:

xxx
xxx
xxx

所以我需要处理多个2D阵列的尺寸(注意:每个2D阵列并不总是等于x和y维度)。无论如何要初始化数组,或获取每行和列数的字符/字母/数字?我不想使用一般性陈述,例如:

String[][] myArray = new Array[100][100];

然后使用filewriter填充数组,扫描程序类看起来像这样吗?

File f = new File(filename);
Scanner input = new Scanner(f);
for(int i = 0; i < myArray[0][].length; i++){
  for(int j = 0; j < myArray[][0].length, j++){
    myArray[i][j] = input.nextLine();
  }
}

2 个答案:

答案 0 :(得分:2)

我看到你有几个选择:

  1. 迭代文件两次,第一次获取数组参数,或
  2. 迭代一次,但填写List<List<SomeType>>可能会将您的列表实例化为ArrayLists。后者将在短期和长期内为您提供更大的灵活性。
  3. (根据MadProgrammer)第三个选项是重新构造文件,以提供决定数组大小所需的元数据。
  4. 例如,使用您的代码,

      File f = new File(filename);
      Scanner input = new Scanner(f);
      List<List<String>> nestedLists = new ArrayList<>();
      while (input.hasNextLine()) {
         String line = input.nextLine();
         List<String> innerList = new ArrayList<>();
         Scanner innerScanner = new Scanner(line);
         while (innerScanner.hasNext()) {
            innerList.add(innerScanner.next());
         }
         nestedLists.add(innerList);
         innerScanner.close();
      }
      input.close();
    

答案 1 :(得分:0)

Java Matrix可以根据您的尺寸设定每行(这是一个数组)。

您可以使用:ArrayUtils.add(char[] array, char element) //static method 但在此之前,您需要检查文件行长度

要么这个,你也可以使用ArrayList&gt;作为保存数据的集合