英文:
Understand Java Scanner weirdness
问题
我正在为学校的代码工作,在读取用户输入时遇到了问题。我创建了一个新的测试类,以查看是否是围绕它的代码出现了问题,但事实并非如此。以下是简化后的代码示例。
import java.util.*;
public class practice {
public static void main(String[] args){
Scanner kb = new Scanner(System.in) ;
String fullname = kb.nextLine();
int age = kb.nextInt();
String program = kb.nextLine();
int number = kb.nextInt();
System.out.println(fullname);
System.out.println(age);
System.out.println(program);
System.out.println(number);
}
}
出现了以下错误:
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 practice.main(practice.java:8)
我已经标记了错误发生的位置。为什么会发生这种情况,我该如何修复?
我已尝试过:
- 在第一个
kb.nextLine()
后添加了kb.nextLine()
。 - 尝试在每次输入后重置扫描器。
英文:
I'm working on code for school and ran into a problem while reading user input. I made a new class for testing to see if it is my code around it and it's not. Here is the simplified code.
import java.util.*;
public class practice {
public static void main(String[] args){
Scanner kb = new Scanner(System.in) ;
String fullname = kb.nextLine();
int age = kb.nextInt();
String program = kb.nextLine();
* int number = kb.nextInt();
System.out.println(fullname);
System.out.println(age);
System.out.println(program);
System.out.println(number);
}
}
The following error comes up
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 practice.main(practice.java:8)
I've marked where the error is incurring. Why is this happening and how can I fix this?
What I've tried so far:
- Added
kb.nextLine()
after the firstkb.nextLine()
- Tried to reset the scanner after each input
答案1
得分: 0
Scanner kb = new Scanner(System.in);
String fullname = kb.nextLine();
int age = kb.nextInt();
kb.nextLine();
String program = kb.nextLine();
int number = kb.nextInt();
kb.nextLine();
System.out.println(fullname);
System.out.println(age);
System.out.println(program);
System.out.println(number);
英文:
Scanner kb = new Scanner(System.in) ;
String fullname = kb.nextLine();
int age = kb.nextInt();
kb.nextLine();
String program = kb.nextLine();
int number = kb.nextInt();
kb.nextLine();
System.out.println(fullname);
System.out.println(age);
System.out.println(program);
System.out.println(number);
专注分享java语言的经验与见解,让所有开发者获益!
评论