private static void method1(ArrayList<String> list) {
boolean flag = true;
Scanner sc = new Scanner(System.in);
int key;
while (flag) {
System.out.println("--------KTV点歌系统--------");
System.out.println("\t\t1.添加歌曲");
System.out.println("\t\t2.置顶歌曲");
System.out.println("\t\t3.上移歌曲");
System.out.println("\t\t4.退出系统");
System.out.print("\t\t请选择(1-4):");
try {
key = sc.nextInt();
} catch (InputMismatchException E) {
key = 0;
}
switch (key) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
flag = false;
break;
default:
System.out.println("输入有误");
break;
}
}
sc.close();
}
这样子的话捕获到异常后会一直死循环显示输入有误
但是每次在try中newScanner的对象就不会无限循环自动输入一个异常的nextInt
try {
Scanner sc = new Scanner(System.in);
key = sc.nextInt();
sc.close();
} catch (InputMismatchException E) {
key = 0;
}
有没有大佬解下惑
如有帮助,望采纳。点击我回答右上角【采纳】按钮。
public static void main(String[] args) {
boolean flag = true;
int key;
while (flag) {
System.out.println("--------KTV点歌系统--------");
System.out.println("\t\t1.添加歌曲");
System.out.println("\t\t2.置顶歌曲");
System.out.println("\t\t3.上移歌曲");
System.out.println("\t\t4.退出系统");
System.out.print("\t\t请选择(1-4):");
Scanner sc = new Scanner(System.in);
try {
key = sc.nextInt();
} catch (InputMismatchException E) {
key = 0;
continue;
}
switch (key) {
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
flag = false;
break;
default:
System.out.println("输入有误");
break;
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m