【发布时间】:2018-08-26 09:47:58
【问题描述】:
早安,
我正在尝试使用扫描仪读取 txt 文件,并将字符保存到二维字符串数组中。 txt 文件由 8 行字符组成,不以空格分隔。如果它们用空格分隔,或者如果字符都在一行中,我的程序可以工作(如果你删除分隔符),或者(包括分隔符)没有空格。
如果有人能告诉我如何正确保存字符,将不胜感激。问题出在带有双 for 循环的 Read() 函数中。我尝试添加另一个分隔符(s.useDelimiter(s.nextLine())),但我不知道如何实现它。
请记住,这是我第一次使用文件扫描仪,而且我只是在学习编程,因此我的代码不会很高级。
亲切的问候, 马修
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class BoardFile {
String[][] board = new String[8][8];
Scanner s;
// Print the board
public void Printboard() {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
public void Open() {
try {
s = new Scanner(new File("**TXT FILE PATHNAME HERE**"));
} catch (FileNotFoundException e) {
System.out.println("Error");
}
}
public void Read() {
s.useDelimiter("");
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
String a = s.next();
board[i][j] = a;
}
}
}
public static void main(String[] args) {
BoardFile a = new BoardFile();
a.Open();
a.Read();
a.Printboard();
}
}
txt 文件: https://www.dropbox.com/s/k8fkneg2dcw0cbe/abcde.txt?dl=0
【问题讨论】:
-
如果你的板子数组真的应该是 8 个字符乘 8 行,那么它的类型可能应该是
char[][],而不是String[][]。至于阅读 - 我认为最好在不更改分隔符的情况下阅读整行,然后使用toCharArray()将该行分解为字符。
标签: java arrays java.util.scanner