InputMismatchException Java第一个扫描仪工作,第二个不工作



此代码适用于第一个接受int的扫描程序,但第二个扫描程序抛出不匹配错误。我似乎不明白它为什么要这么做。有人能帮我吗?我什么都试过了,但都不起作用。我可以让第一个扫描仪多次接受字符串。第二个扫描程序将接受int,但如果我尝试输入字符串哪怕一次,程序就会崩溃。如何解决这一问题?

有关完整程序的更多详细信息,请单击此处:

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();

我浏览了代码,它在BlueJ上运行良好。这是控制台映像。你能再解释一下编译时出现的错误吗?这里还有完整的代码

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();
}
}
}

抛出的错误为InputMismatchException。它发生在n2上为什么会发生。。。我和你一样惊讶。奇怪的是,它怎么没有把同样的问题抛给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循环永远不会被击中。不过我看得出来你在干什么。

相关内容

最新更新