public class test {
public static void main(String[] args) {
Scanner sv = new Scanner(System.in);
while (true) {
System.out.println("请输入值");
try {
int index = sv.nextInt();
show(index);
break;
} catch (asd e) {
System.out.println(e.toString());
continue;
} catch (InputMismatchException e) {
System.out.println("输入错误");
continue;
}
}
}
public static void show(int i) {
if (i < 10) {
System.out.println(i);
} else {
throw new asd("请输入一个小于10的数");
}
}
}
//异常
public class asd extends RuntimeException {
public asd() {
}
public asd(String message) {
super(message);
}
}
当输入小于10 的时候,代码会结束while循环
输入大于10 的时候,会一直让重新输入
输入字符的时候,会捕获异常进入死循环
怎么才能解决这个死循环,捕获输入错误,并重新输入
因为你while true啊
所以抓到异常了之后,被catch处理掉了 程序不会停止 然后又到循环头部了
如果你不用try catch,直接获取int之后show 一下,就直接抓到异常 程序就终止了。
try catch就是为了防止程序异常终止。
将Scanner sv = new Scanner(System.in);放在while循环内。
我看你的逻辑就是这样啊,你只有输入小于10的数才结束循环,没问题啊
catch (asd e) {
System.out.println(e.toString());
continue;
} catch (InputMismatchException e) {
System.out.println("输入错误");
continue;
}
是你的代码有问题,把continue语句改为break语句就正常了。
你代码的逻辑有问题的话,你代码是输入i>10的时候,你用了continue,所以肯定继续循环,当遇到小于10的,你终止了循环,continue用错了
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632