首页 > 解决方案 > 为什么我的 try catch 语句不起作用?

问题描述

该程序相当简单,我只是一个测试 try-catch 语句的初学者,尽管我已经阅读了 2 天,但我仍然无法理解为什么这个特定的 try 语句对我不起作用。我知道我可以使用 String 而不是 int,但我想知道为什么它对此不起作用,以及如何使它起作用。本质上我希望用户输入 1 或 2,如果他们输入 1,程序(测验)将开始,否则如果他们按 2,程序将终止。如果他们按下其他任何东西,例如一个字母、另一个数字,或试图按字面意思做任何其他事情,它会说“再试一次”并重复相同的循环。

这似乎是一个愚蠢的问题,但我对此很陌生,并且会感谢您的澄清。

Scanner scanner = new Scanner(System.in);
int score = 0;

System.out.println("Are you ready for a quiz?\n1.yes\n2.no");
int input = scanner.nextInt();

do {
    scanner.nextInt();
        try {

            if (input == 2) {
                System.out.println("Maybe next time!");
                System.exit(0);
            } else if (input == 1) {
                System.out.println("Okay! good luck!\n");
            }

        } catch (InputMismatchException e) {
            System.out.println("Invalid input. Try again\n");
        }
} while (input != 1);

标签: java

解决方案


1 . 问题是什么 ?

要看到Invalid input. Try againaInputMismatchException必须被扔进try块内,它不会发生,因为输入没有进入ifor else if,你期望的可以用

try {
   if (input == 2) {
       System.out.println("Maybe next time!");
       System.exit(0);
   } else if (input == 1) {
       System.out.println("Okay! good luck!\n");
   }else{
       throw new InputMismatchException();
   }
} catch (InputMismatchException e) {
   System.out.println("Invalid input. Try again\n");
}

2 . 如何处理这种用法?

但是Exception不必将其用作正常行为,并且要准备好Strings,您需要:

System.out.println("Are you ready for a quiz?\n1.yes\n2.no");
String input;
do {
    input= scanner.nextLine();
    if (input.equals("2")) {
       System.out.println("Maybe next time!");
       System.exit(0);
    } else if (input.equals("1")) {
       System.out.println("Okay! good luck!\n");
    }else{
        System.out.println("Invalid input. Try again\n");
    }     
} while (!input.equals("1"));

3 . 如何改进它?

您可以更改 some 的位置print,因此可以简化为:

System.out.println("Are you ready for a quiz?\n1.yes\n2.no");
String input;
do {
    input= scanner.nextLine();
    if (input.equals("2")) {
       System.out.println("Maybe next time!");
       System.exit(0);
    } 
    System.out.println("Invalid input. Try again\n");             
} while (!input.equals("1"));
System.out.println("Okay! good luck!\n");

推荐阅读