在java中读取文本文件,同时使用扫描仪类保留空白区域

时间:2014-10-08 18:15:18

标签: java java.util.scanner bufferedreader readfile fileinputstream

我想阅读此文本文件并将数据存储在2D数组中。每个空格应替换为0,最终矩阵为0和1。发生的问题是Scanner忽略了所有的空格,只将1放在矩阵中。

这是文本/输入文件。

                                       1111
                                      111111
                                    111 111   1
         111111                    11    111  11
       1111                         111  111    111
       1  1     11111 111           1 11  11        11111
     1111      111                        11111111
       1111     11111             111     1  11 11111
     111 111       1111           111            1111
       111       1111            11111      111111
       111      11 11                11111     111
          1111    11                11111
        1111                            11111
            1111 11 11                      1111
          111     111                        1 111
           11      1111                    111111
         1111      111                    1111
         1111     111                    1111
      1111 11      1111                   1111
        1111  111111                   11111
        111                              11111
          1111                        1111

扫描仪fileScanner =新扫描仪(新文件(“D:\ Assignment.txt”)); int [] [] inputMatrix = new int [200] [200]; int i = 0,j = 0; while(fileScanner.hasNextLine()){String line = fileScanner.nextLine();扫描仪lineScanner =新扫描仪(线); while(lineScanner.hasNext()){int token = Integer.parseInt(lineScanner.next()); inputMatrix [i] [j] =令牌; //做任何需要用标记j ++做的事情; } lineScanner.close();我++; J = 0; //你在这里的最后一行。做你该做的事。 } fileScanner.close();

2 个答案:

答案 0 :(得分:2)

读取线条并将它们转换为2D数组:

List<String> lines = new ArrayList<>();
Scanner sc = new Scanner(new File("array.txt"));
while(sc.hasNextLine()) {
    lines.add(sc.nextLine());
}

// to array
int rows = lines.size();              // number of rows
int cols = 0;                         // number of columns
for(String line : lines) {
    cols = Math.max(cols, line.length());
}
int[][] array = new int[rows][cols];  // full of 0s
int i = 0;
for(String line : lines) {            // for each line, add the 1s
    char[] chars = line.toCharArray();
    for(int j = 0 ; j < chars.length ; ++j) {
        if(chars[j] == '1') {
            array[i][j] = 1;
        }
    }
    i++;
}

答案 1 :(得分:1)

Scanner sc = new Scanner(file);
String input = "";
while (sc.hasNextLine()) {
    input += sc.nextLine()+"\n";
}
sc.close();
String[] array = input.split("\n");

现在你有一个行数组,你可以在每个字符串上使用replace(" ", "0")然后toCharArray()来创建一个字符数组并将它们全部放在一个新数组中