Java try catch for do while循环不循环
我在尝试执行try-catch for do while循环时遇到了一些问题:Java try catch for do while循环不循环,java,do-while,Java,Do While,我在尝试执行try-catch for do while循环时遇到了一些问题: try{ do { System.out.println("Enter your option: "); choice = sc.nextInt(); switch (choice) { case 1: break; case 2: break;
try{
do {
System.out.println("Enter your option: ");
choice = sc.nextInt();
switch (choice) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
} while (choice != 6);
}catch(InputMismatchException e){
System.out.println("Please enter option between 1-6.");
}
我试图为do while循环做的是,当用户输入除6之外的任何内容时,它将继续提示用户输入。对于每一种情况,都将使用特定的方法
然后,我尝试对InputMismatchException执行try-catch,因为我的扫描仪从用户输入中获取整数。然而,在我输入字母表而不是整数后,程序就自动终止了。我试着做像当用户输入字母表,它会不断提示用户正确的输入
有什么想法吗?提前谢谢
我在想,我是否应该再做一次,同时包装整个试捕?像这样做:
try {
choice = sc.nextInt();
} catch(InputMismatchException e){
System.out.println("Please enter option between 1-6.");
sc.next();
continue;
}
如果用户输入无效的输入,它将转到catch块并继续循环。拆下外部试扣块。处理字符和无效数字不是必需的,您可以这样做:
do {
System.out.println("Enter your option: ");
try{
choice = sc.nextInt();
catch(InputMismatchException e){
choice = 0;
sc.next();
}
switch (choice) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
System.out.println("Please enter option between 1-6.");
break;
}
} while (choice != 6);
嗯,这实际上给了我无限的循环,当用户输入字母表时,选项菜单本身只是保持循环,而不接受用户输入。我删除了外部的try-catch并按照您的建议进行了操作,但不幸的是没有运气。您的
break
语句应用于开关(而不是循环),当您没有得到int
时,您需要调用Scanner.next()
(或者令牌将导致无限循环).对不起,你介意给我看一些代码示例吗?我很困惑,我明白了,我明白了。这就解决了问题。非常感谢你!如果抛出一个异常,那么它将把您带到while循环之外的catch,并因此终止。只需将您的try-catch更多地放在您希望捕获异常的地方,即在for循环中。是的,我按照答案之一的建议将其移入。但问题是,当用户输入字母表时,程序会给我一个无限循环“输入您的选项:”而不接受用户输入只要您重新定义要在输入中检查的变量(try-catch中的变量),那么它就不会是一个“无限”循环。用户输入有效输入,然后继续操作,即可退出。另一种方法是根本不使用nextInt,直接从用户那里获取字符串输入并自己验证,而不是使用try-catch机制。