从文本文件中读取并忽略空格

时间:2015-09-27 22:05:01

标签: java arrays file-io

我正在阅读一个看起来像这样的文本文件:

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);
        }
    }
}

4 个答案:

答案 0 :(得分:3)

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

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

它将跳过空格

答案 1 :(得分:1)

您可以使用有效的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

答案 2 :(得分:0)

readLine ()模式

上拆分从" "获得的字符串

答案 3 :(得分:0)

您可以使用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;
        }

    }
}