我希望避免在输入nextInt()
的数字时按Enter键所产生的"新行字符"的问题,因为nextLine()
将消耗新行字符,不让我输入字符串.
我使用了一个定制的分隔符来避免这个问题,这样nextInt()
也可以使用行尾字符
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
sc.useDelimiter("\\n");
System.out.println("Enter your age");
int age=sc.nextInt();
System.out.println("Enter your name");
String name=sc.nextLine();
System.out.println("Age is "+ age);
System.out.println("Name is "+ name);
}
}
但是,当我运行此程序时,我收到以下错误:
Enter your age
4
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Test.main(Test.java:8)
我不明白为什么我会收到InputMismatchException. 有人能解释一下这个分隔符是如何工作的吗?
正如@abra在 comments 中指出的那样,如果我使用next()
而不是nextLine()
,它会按预期工作.问题是,为什么nextLine()
不起作用?