我使用Scanner读取包含*,空格和字母的文本文件。两个或多个空格可以一个接一个地出现。例如:
**** AAAAA* * ****
******* AAAAAA*** *
我写了以下代码:
lineTokenizer = new Scanner(s.nextLine());
int i=0;
if (lineTokenizer.hasNext()) {
//lineTokenizer.useDelimiter("\\s");
System.out.println(lineTokenizer.next());
//maze[0][i]=lineTokenizer.next();
i++;
}
lineTokenizer不会从输入文件中读取*,而不是存储在迷宫数组中的字符。你能告诉我哪里出错了吗?谢谢!
答案 0 :(得分:2)
您还可以使用FileInputStreams
使用BufferedReader
读取文件。
我个人仅使用Scanner
作为控制台输入。
答案 1 :(得分:1)
我认为你应该使用循环而不仅仅是。
尝试将第3行更改为:
while (lineTokenizer.hasNext())
答案 2 :(得分:1)
由于您使用的是 if 条件,因此指针不会向前移动。您应该使用循环来连续读取扫描仪中的数据。希望有所帮助。
答案 3 :(得分:0)
我猜你尝试不同的东西时,代码会多次更改。 我不知道你如何处理迷宫的初始化,但为了避免任何ArrayIndexOutOfBounds,我会在List中使用List。 我对你想要的东西做了一些猜测并提出了这个建议:
List<List<String>> maze = new ArrayList<>();
Scanner s = new Scanner("**** AAAAA* * ****\n ******* AAAAAA*** *");
while (s.hasNextLine()) {
List<String> line = new ArrayList<>();
Scanner lineTokenizer = new Scanner(s.nextLine());
lineTokenizer.useDelimiter("\\s+");
while (lineTokenizer.hasNext()) {
String data = lineTokenizer.next();
System.out.println(data);
line.add(data);
}
lineTokenizer.close();
maze.add(line);
}
s.close();
我没有完全理解你的目标。这是关于你想要的吗?
上面的代码将为您提供以下列表:[[****, AAAAA*, *, ****], [*******, AAAAAA***, *]]