如果InputMismatchException继续循环怎么办?

时间:2019-05-08 20:18:18

标签: java

我正在尝试为程序创建简单的菜单。当用户输入char而不是整数时,我使用InputMismatchException捕获异常,但是当我输入char时程序正在循环。

我将callMenu方法留空,但在解决此问题后将其填充。

我不确定主菜单或捕获部分中的错误。当我没有在catch部分中编写kb.nextInt()时,我将得到无限循环。在另一种情况下,它会显示错误

localstorage.removeItem('webToken')

2 个答案:

答案 0 :(得分:0)

我不会大量修改您的代码。这是我看到的错误以及我认为您可以更改的内容

  1. 如果不输入整数,则获取第一个输入的点将引发异常。您周围没有捕获块。因此,您应该在try catch块中使用它来捕获任何无效输入
  2. 当在while条件中将值检查为“ true”时,main方法将保持无限运行。将其更改为false。
  3. 我在下面为您提供的内容假设,如果通过显示错误消息输入了字符/非整数值,则程序将退出。如果输入为整数,则代码将循环播放,直到达到正确的菜单项之一为止
  4. 我只输入更改内容,而不是下面的整个代码。休息保持不变。
public static int getChoice() {
        Scanner kb = new Scanner(System.in);
        System.out.print("\n Enter menu number:");
        int choice=-1;

        try{
            choice = kb.nextInt();
            while (!isValidChoice(choice)) {
                    System.out.println("\n INVALID INPUT. Try again.");
                    System.out.print("Enter menu number: ");
                    choice = kb.nextInt();
            }
        }catch (InputMismatchException e) {
            System.out.println("Error");
        }
        return choice;
    }

在您的主要方法中

public static void main(String[] args) {
    do {
        Menu.showMenu();
        Menu.callMenu(Menu.getChoice());
        } while (false);
    }

希望这能解决。让我知道

答案 1 :(得分:-1)

尝试将此代码放入Menu类中

public static void main(String[] args) {

    do {
        Menu.showMenu();
        Menu.callMenu(Menu.getChoice());
    } while (true);
}

public static void showMenu() {
    System.out.println("----------Menu----------");
    System.out.println("1 - ");
    System.out.println("2 - ");
    System.out.println("0 - Exit");
}