【问题标题】:Reading from a text file and ignoring spaces从文本文件中读取并忽略空格
【发布时间】:2015-09-27 22:05:00
【问题描述】:

我正在读取一个如下所示的文本文件:

A B C D
E F G H
I J K L
M N O P

我将把它存储到一个 4x4 字符数组中。我的问题是,每当我从文件中读取时,它都会计算字母之间的空间,从而将空间存储在 char 数组中。我如何阅读没有空格的行?这是我得到的:

char[][] letters = new char[4][4]
Scanner read = new Scanner(new File("letters.txt"));
while(read.hasNextLine()) {
    for(int row = 0; row < letters.length; row++) {
        String line = read.nextLine();
        for(int col = 0; col < letters[row].length; col++) {
            letters[row][col] = line.charAt(col);
        }
    }
}

【问题讨论】:

  • 您可以使用Scanner#next() 单独读取字符。将跳过空格。

标签: java arrays file-io


【解决方案1】:

如果您只想从 line 获取单个字符,请使用

letters[row][col] = line.charAt(2*col);

它会跳过空格

【讨论】:

    【解决方案2】:

    您可以使用有效的replace 方法

    for(int row = 0; row < letters.length; row++) {
        String line = read.nextLine();
        line = line.replace(" ", "");
        for(int col = 0; col < letters[row].length; col++) {
            letters[row][col] = line.charAt(col);
        }
    }
    

    这将采用您最初的String 并基本上删除所有空格。

    这是您的输入,例如:

    A B C D
    

    这是line.replace(" ", "")的输出

    ABCD
    

    【讨论】:

      【解决方案3】:

      " " 模式上拆分从readLine () 获得的字符串

      【讨论】:

        【解决方案4】:

        您可以使用split 函数。它将为您提供将文件的每一行存储在一个数组中,以空间" " 为参考。此外,您应该在循环之外声明您的 line 变量。

        例如,如果您有第一行:A B C D

        line = read.nextLine(); //Here you read the line
        
        /* Here you store each character of your line in a position of the array 
          because you are taking as reference the space " " */
        
        array = line.split(" "); 
        
        System.out.println(array[0]); //A
        System.out.println(array[1]); //B
        System.out.println(array[2]); //C
        System.out.println(array[3]); //D
        

        您的代码必须如下所示:

        char[][] letters = new char[4][4];
        String line;
        char ch; 
        String[] array;
        Scanner read = new Scanner(new File("letters.txt"));
        while(read.hasNextLine()) {
            for(int row = 0; row < letters.length; row++) {
                line = read.nextLine();
                array = line.split(" ");
        
                for(int col = 0; col < letters[row].length; col++) {
                {
                   ch = array[col].charAt(0);
                   letters[row][col] = ch;
                }
        
            }
        }
        

        【讨论】:

        • 这很有帮助,但它不起作用,因为 array[col] 是 String[] 而不是 char
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 1970-01-01
        • 2015-12-22
        相关资源
        最近更新 更多