如何在 Java 中使用 Scanner 读取多行并在特定字符串之前结束?
How do I read multiple lines and end before a certain string using Scanner in Java?
我试图在到达特定字符串“***”之前从文本文件中读取多行,然后我想将其打印出来。我该怎么做呢?
代码:
public void loadRandomClass(String filename) {
try {
Scanner scan = new Scanner(new File(filename));
while((scan.hasNextLine()) && !(scan.nextLine().equals("***"))) {
}
scan.close();
} catch (FileNotFoundException e) {
System.out.println("Something went wrong");
e.printStackTrace();
}
}
我尝试了一些东西,但它从第一行开始每第二行一直跳过,并且不会在“***”之前停止。
问题是 scan.nextLine() 读取该行并将其从我想的缓冲区中删除。试试这个:
while(scan.hasNextLine()) {
String next = scan.nextLine();
if(next.contains("***") break;
System.out.println(next);
}
我试图在到达特定字符串“***”之前从文本文件中读取多行,然后我想将其打印出来。我该怎么做呢? 代码:
public void loadRandomClass(String filename) {
try {
Scanner scan = new Scanner(new File(filename));
while((scan.hasNextLine()) && !(scan.nextLine().equals("***"))) {
}
scan.close();
} catch (FileNotFoundException e) {
System.out.println("Something went wrong");
e.printStackTrace();
}
}
我尝试了一些东西,但它从第一行开始每第二行一直跳过,并且不会在“***”之前停止。
问题是 scan.nextLine() 读取该行并将其从我想的缓冲区中删除。试试这个:
while(scan.hasNextLine()) {
String next = scan.nextLine();
if(next.contains("***") break;
System.out.println(next);
}