java - 如何在循环中创建 try block ?

标签 java loops try-catch

我刚刚了解了Java中的'try'语句,我想做的是让这个输入循环,直到用户的输入既是整数和正数。

这是我到目前为止的代码:

int scanning () {

    Scanner scan = new Scanner(System.in);
    int input = 0;
    boolean loop = false;
        do {
            try {
                System.out.print("Amount: ");
                input = scan.nextInt();
                if (input < 0) {
                    System.out.println("Error. Invalid amount entered.");
                    loop = true;
                }
            } catch (Exception e) {
                System.out.println("Error: Invalid input");
                loop = true;
            }
        } while (loop);

    return input;
}

但是,当用户输入无效整数时,它会经历无限循环,一遍又一遍地打印错误消息。预期结果是不断要求用户提供有效的输入。

最佳答案

此代码将帮助您进入无限循环,并在输入为 -ve 整数时引发异常。

java中的异常处理是处理运行时错误的强大机制之一,以便维持应用程序的正常流程。

大多数时候,当我们用java开发应用程序时,我们经常觉得需要创建并抛出自己的异常。因此,首先创建一个用户定义的异常AmountException。

      public class AmountException extends Exception {
            private static final long serialVersionUID = 1L;

            public AmountException() {
                // TODO Auto-generated constructor stub
                System.out.println("Error. Invalid amount entered");
            }
        }

现在将你的scanning()编辑为:

    int scanning () {
    Scanner scan = new Scanner(System.in);
    int input = 0;
    boolean loop = false;
    do {
        try {
            System.out.print("Amount: ");
            input = scan.nextInt();
            if (input < 0) {

                loop = true;
                throw new AmountException();

            } else {
                loop = false;
            }

        } catch (AmountException e) {

        }
    } while (loop);

    return input;
}

关于java - 如何在循环中创建 try block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33758534/

相关文章:

java - try/catch block Java 中的返回语句

C++打印元素总和

java - java中是否有一个命令可以让程序回到循环的开头

java - 从 Android 上的类启动 Activity 时出错

java - SQLite 结果集 getString SQLException

php - 构建第一个自定义 CMS,并被告知使用 Dreamweaver 和一个名为 Horizo​​ntal Looper 的插件

c# - 包含 try-catch 的内联方法

c# - 实现死锁异常的重试逻辑

java - 如何处理来自 AsyncTask 的返回值

java - 是否有机器人编程游戏 robocode 的替代品?