【问题标题】:InputMismatchException Java first scanner works second does notInputMismatchException Java 第一个扫描器工作第二个不
【发布时间】:2021-12-18 05:52:06
【问题描述】:
此代码适用于第一个扫描器接受整数,但第二个扫描器引发不匹配错误。我似乎无法找到它为什么这样做。谁能帮我吗?
我已经尝试了一切,但它不起作用。我可以让第一个扫描仪多次接受字符串。第二个扫描仪将接受整数,但如果我尝试输入一个字符串甚至一次,那么程序就会崩溃。如何解决?
有关完整程序的更多详细信息,请单击此处:
pastebin.com/iMgNncMH
密码:ENdu4mWLNm
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("Enter two integers:");
while (!scanner.hasNextInt()) {
scanner.next();
}
int n1 = scanner.nextInt();
int n2 = scanner.nextInt();
System.out.println();
【问题讨论】:
标签:
java
oop
switch-statement
do-while
inputmismatchexception
【解决方案1】:
我查看了代码,它在 BlueJ Here is the console image. 上运行良好,您能否解释一下您在编译时遇到的错误?还有完整的代码
import java.util.*;
public class prime {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("Enter two integers:");
while (!scanner.hasNextInt()) {
scanner.next();
}
int n1 = scanner.nextInt();
int n2 = scanner.nextInt();
System.out.println();
}
}
}
【解决方案2】:
抛出的错误是 InputMismatchException。它发生在 n2 为什么会发生这种情况...... idk 我和你一样惊讶。奇怪的是它如何不抛出 n1 相同的问题。也许它与您正在寻找的下一个 int 有关。这是我的建议。使用布尔 while 循环的基本错误处理。如果 catch 被抛出,它永远不会达到 true,因此必须输入两个整数。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n1 = 0;
int n2 = 0;
System.out.println("Enter two integers:");
boolean validEntry = false;
while(!validEntry) {
try {
n1 = scanner.nextInt();
n2 = scanner.nextInt();
validEntry = true;
}
catch(InputMismatchException ex){
System.out.println("Please refrain from entering words. only numbers aloud");
scanner.nextLine();
}
}
}
Ps 你的其他 while 循环永远不会被命中。不过我可以看出你的目的。