java初学者想问下关于异常捕获和Scanner输入的问题

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