为什么我无法读取使用第二个Scanner实例的第二行?我得到一个“java.util.NoSuchElementException:找不到行”。java.util.Scanner第二个实例抛出NoSuchElementException
我知道我应该使用hasNextLine()并避免了例外,但我的问题是为什么第二行不可用?此外,有多个扫描程序实例的原因是因为实际上,扫描程序正在被多次调用的方法中实例化,并且我没有在那里寻找解决方案或修复程序。
请注意,我没有关闭扫描仪或流。我每次只使用扫描仪读取1行,而我在流中有3行。
下面是我的程序简化:
private void scanLines() {
String input = "Line 1." + System.lineSeparator()
+ "Line 2." + System.lineSeparator()
+ "Line 3." + System.lineSeparator();
ByteArrayInputStream bais = new ByteArrayInputStream(input.getBytes());
Scanner scanner1 = new Scanner(bais);
System.out.println(scanner1.nextLine());
Scanner scanner2 = new Scanner(bais);
System.out.println(scanner2.nextLine());
}
输出是:
Line 1.
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at ScannerTest.scanLines(ScannerTest.java:23)
at ScannerTest.main(ScannerTest.java:6)
千万不要在同一个流上使用两个扫描器 – freedev
为什么当你想读取字符串行时使用ByteArrayInputStream ?! – GhostCat
只需使用相同的扫描器 – Hackerman