我正在阅读一个看起来像这样的文本文件:
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);
}
}
}
答案 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;
}
}
}