如何将文本(从文本文件)放入2D字符数组?

时间:2015-10-26 01:47:04

标签: java arrays loops char

问题:

您的文本文件在第一行后面包含一组信息。第一行包括高度,然后是宽度(用逗号分隔)。

文件示例:

SignalTimeOut.Add(new StopSignal(){time = DateTime.Now, symbol="AAPL", timeout=60});

我的解决方案:

我正在考虑使用类似的东西,

10, 10
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########

code source

但只是不明白如何从第一行收集信息。

3 个答案:

答案 0 :(得分:0)

for (int row = 0; row < x; row++) {
    String words = inputFile.nextLine();
    if (row == 0) {
         final int width = Integer.parseInt(words.split(",")[0].trim()),
                  height = Integer.parseInt(words.split(",")[1].trim());
         // Do whatever with the width and height
    } else {
        for (int i=0; i < words.length(); i++) {
            array[x][y] = words.charAt(i);
        }
    }
}

上面的代码应该满足您的需求。如果正在读取第一行,它将解析宽度和高度。

此外,您确实不需要for循环列,并且在数组中使用x而不是row的代码也没有用。

我建议array[row][i] = words.charAt(i);

答案 1 :(得分:0)

首先,我建议使用扫描仪。使用扫描仪,您可以使用next()两次来获取行号和列号。假设文本文件的格式始终相同,则可以使用该扫描器next()列次数并解析每个字符串(表示单行)以获取字符。

答案 2 :(得分:-1)

由于您似乎对Java很新,我建议您使用BufferedReader,并使用split()parseInt()解析第一行:

String filename = "path/to/myfile.txt";
try (BufferedReader in = new BufferedReader(new FileReader(filename))) {
    String line = in.readLine();
    String[] values = line.split(",");
    int rows = Integer.parseInt(values[0].trim());
    int cols = Integer.parseInt(values[1].trim());
    char[][] matrix = new char[rows][cols];
    for (int row = 0; row < rows; row++) {
        String line = in.readLine();
        for (int col = 0; col < cols; col++)
            matrix[row][col] = line.charAt(col);
    }
}

对于更高级的方法,应使用正则表达式解析第一行,并且代码应执行更多错误检查。然而,这超出了今天课程的范围。