我知道我冒了风险,但我似乎无法理解为什么我们不能只是创建两个Scanner类的实例。 为了防范万一,我会举个例子。
import java.util.Scanner;
public class Nope
{
public static void main(String[] args)
{
System.out.println("What's your name?");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
System.out.println("Welcome " + name + "!");
scanner.close();
// Now
System.out.println("where you do live?");
Scanner sc = new Scanner(System.in);
String country = sc.nextLine();
System.out.println("That's a lovely place");
sc.close();
}
}
我遇到了一个运行时错误,看起来像这样
What's your name?
Kate
Welcome Kate!
Exception in thread "main" where you do live?
java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at Nope.main(Nope.java:17)
我知道再创建一个同类的新对象没有意义,这会增加冗余。但是,如果我知道为什么这样做,我的理解会更加清晰,你不也这么认为吗?
机器所说的“java.util.NoSuchElementException: No line found”是什么意思?人们说Scanner无法克隆。
PS:我故意关闭了第一个scanner并创建了一个新对象,只是为了理解这个问题。