文本文件到2D数组

时间:2014-05-23 12:21:51

标签: java arrays bufferedreader

我正在逐行阅读一个文本文件,现在我想把它安排在一个二维数组中但是我被卡住了。 这是代码:

BufferedReader bfr = new BufferedReader(new FileReader("Data.txt"));
        String line;
        while ((line = bfr.readLine()) != null) {

            System.out.println(line);
        }
            bfr.close();

所以我得到它来打印文本文件,但现在我想把它安排在一个二维数组中。 有什么帮助吗?

3 个答案:

答案 0 :(得分:0)

java中有一个很棒的类,它叫做Scanner,可用于许多与流数据相关的事情。

File file = new File("data.txt");     
    try {
        Scanner scanner = new Scanner(file);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println(line);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

您可以将它用于文件。它将逐行读取。 在这里打印,但将其存储在数组中并完成!

答案 1 :(得分:0)

尝试制作一个ArrayList:

ArrayList<String> bob = new ArrayList<String>();

然后你可以去:

bob.add(line);

然后打印出来,你可以去:

for(int x = 0; x < bob.length; x++) {
    System.out.println(bob[x]);
}

那应该有用。 :)

答案 2 :(得分:0)

文本到2D数组?有趣且非常普遍。正如之前的回答中提到的,扫描仪可能很有用,但是获取文本文件的方法很好;即使扫描仪可能具有更好的速度性能(进行一些研究。:P)

我解决这个问题的方法是在每个瓷砖(?)之间添加一个分隔符。例如:

1:1:1:1:1:1:1
1:0:1:0:0:0:1
1:0:0:0:1:0:1
1:1:1:1:1:1:1

这允许您抓取一条线,然后使用String.split(String delimiter)方法将其拆分。正如LouisDev所说,扫描仪更好,所以我会用它:

File file = new File("data.txt");     
try {
    Scanner scanner = new Scanner(file);
    int y = 0;
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        System.out.println(line);
        y++;
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

因此,我们可以获取该行并将其存储到变量 y 中。这将在以下方法中使用,该方法显示收集字符串中的所有内容并将其存储到2D数组中的方法。实际上,这是你问题的答案。

File file = new File("data.txt");     
try {
  Scanner scanner = new Scanner(file);
  int y = 0;
  int[][] map = new int[methodParsedHeight][methodParsedWidth];
  while(scanner.hasNextLine()) {
    String line = scanner.nextLine();
    String[] lineSplit = line.split(":");
    for(int x = 0; x < lineSplit.length; x++ {
      map[y][x] = Integer.parseInt(lineSplit[x]);
    }
    System.out.println(line);
    y++;
  }
  return map;
} catch(FileNotFoundException e) {
  e.printStackTrace();
}

这有效地解决了发生的问题。如果没有,请给我们评论!

贾罗德。