计数行数/与扫描仪一致的最大字符数

时间:2018-08-31 10:46:13

标签: java

我试图使用扫描仪从txt文件中读取字符,然后我想创建一个2D数组,在其中放置所有字符,包括空格。

我的文本文件看起来像这样(我刚创建它可以尝试一些东西)

###  ###
##
###   ####

我的代码当前看起来像这样:

public class Sokoban7 {
    File file;
    Scanner sc;
    Scanner bc;
    String d;
    static int lines;
    static int lineLength;
    static int maxChar;
    int b;
    String[][] array;
    String line2;
    int r;
    int q;
    int m;
    int n;

    public Sokoban7() throws Exception {

        ArrayList<Character> list = new ArrayList<Character>();
        file = new File("C:/Users/joaki/Desktop/sokoban/readin.txt");
        sc = new Scanner(file);
        sc.useDelimiter("s*");
        sc.reset();
        Character c = sc.next().charAt(0);

        while (sc.hasNextLine()) {
            list.add(c);
            String line = sc.nextLine();
            lines++;
            if (line.length() > maxChar) {
                maxChar = line.length();
            }
        }

        sc.close();
        array = new String[maxChar][lines];
        bc = new Scanner(file);
        bc.reset();
        bc.useDelimiter("s*");

        while (bc.hasNext()) {
            d = bc.next();

            for (int n = 0; n < lines; n++) {
                line2 = "";

                for (int m = 0; m < maxChar; m++) {
                    array[m][n] = d;
                }
            }
        }

        System.out.println(Arrays.deepToString(array));
        bc.close();
    }

    public static void main(String[] args) throws Exception {
        Sokoban7 g = new Sokoban7();
    }
}

我需要一些建议,是否真的需要编写所有这些代码,或者有更快的方法吗?我无法同时计算行数和字符数,却又占用了相当多的空间,还有想法吗?

1 个答案:

答案 0 :(得分:1)

我认为一种更好的方法是使用BufferedReader。使用Java 8,您可以执行以下操作:

final char[][] lines;
try (final BufferedReader reader = new BufferedReader(new FileReader(file))) {
    lines = reader.lines()
                  // convert each line into a char[]
                  .map(line -> line.toCharArray())
                  // collect the lines into a char[][]
                  .toArray(char[][]::new);
}