[英]scanner.skip(pattern) gives Exception for String and File but not for System.in
import java.io.*;
import java.util.*;
class Main{
public static void main(String[] args) throws Exception {
File f = new File("x.txt"); //x.txt has "xxx"
String x = "xxx";
//Scanner s = new Scanner(System.in);
Scanner s = new Scanner(f);
//Scanner s = new Scanner(x);
s.skip("g");
System.out.println(s.nextLine());
}
}
在从文件或字符串读取的情况下,如果当前java.util.NoSuchElementException
position 的模式不匹配,则会引发 java.util.NoSuchElementException。
但是在System.in
的情况下,如果当前 cursor position 的模式不匹配,则不会引发异常。 相反,cursor 只是不断跳过输入。 为什么?
在 File 和 String 的情况下,您的输入被终止,而 System.in 如果您在控制台中键入更多字符,则会不断向 Scanner 提供数据。
如果 System.in 终止,您可以看到相同的结果。 此示例为 java 进程提供一组固定的 System.in 值,以便读取 stream 的结尾,您将获得java.util.NoSuchElementException
。
echo xxx | java -cp your.jar Main
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.