java - 捕获异常后恢复循环

标签 java java.util.scanner do-while

我在我的 main 方法中捕获了一个 inputMismatchException 并希望我的 do-while 循环在捕获到异常后再次迭代。我什至编写了一个显式的 continue 语句,但这没有用。我该怎么做?

public class AddressBookApp {

public static void main(String[] args) {
    AddressBook abook = new AddressBook();

    System.out.println("Welcome to the Address Book Application\n");
    Scanner sc = new Scanner(System.in);

    int menuNumber = 4;
    loop:
    do {
        abook.menu();

        try{
            menuNumber = sc.nextInt();
            System.out.println();

            if (menuNumber < 1 || menuNumber > 4){
                System.out.println("Please enter a valid menu number\n");
            } else if (menuNumber == 1) {
                abook.printEntries();
            } else if (menuNumber == 2) {
                abook.addEntry();
            } else if (menuNumber == 3) {
                abook.removeEntry();
            } else {
                System.out.println("Thanks!  Goodbye.");
                sc.close();
                return;
            }


        } catch (InputMismatchException ime) {
            System.out.println("Please enter an integer");
            sc.next();

            continue loop;
        }

    } while (menuNumber != 4);
    sc.close();
  } 
}

最佳答案

您让 menuNumber 等于 4,这是循环的终止条件。你的循环当然会结束。

关于java - 捕获异常后恢复循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14166329/

相关文章:

java - 当用户输入是一个小的 float 时扫描仪抛出

Java If 循环未执行 : Scanner

C do-while 循环

c - 循环永远持续

java - 可以将样式表与 iText 一起使用吗?

java - Apache Commons Exec 为包含空格的参数生成太多引号?

java - 从 Java 中的多个方法获取用户输入的最佳实践?

java - 将华氏度转换为摄氏度 (Java)

java - web.xml的<filter-mapping>里面的<servlet-name>是什么意思?

java - SpEL : get current bean name during bean instantiation