scanner.skip(pattern) 为字符串和文件提供异常但不为 System.in
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
。
但在 System.in
的情况下,如果模式在当前光标位置不匹配,则不会抛出异常。相反,光标只是不断跳过输入。为什么?
对于文件和字符串,您的输入将被终止,而如果您向控制台输入更多字符,System.in 会继续向扫描仪提供数据。
如果终止,您可以看到与 System.in 相同的结果。此示例为 System.in 进程提供一组固定值,以便读取流的末尾,您将获得 java.util.NoSuchElementException
:
echo xxx | java -cp your.jar Main
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
。
但在 System.in
的情况下,如果模式在当前光标位置不匹配,则不会抛出异常。相反,光标只是不断跳过输入。为什么?
对于文件和字符串,您的输入将被终止,而如果您向控制台输入更多字符,System.in 会继续向扫描仪提供数据。
如果终止,您可以看到与 System.in 相同的结果。此示例为 System.in 进程提供一组固定值,以便读取流的末尾,您将获得 java.util.NoSuchElementException
:
echo xxx | java -cp your.jar Main