此代码适用于第一个接受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循环永远不会被击中。不过我看得出来你在干什么。