java - 检查输入以查看 Java 中的输入是否为 double

标签 java exception

我正在创建需要 2 个数字的代码,然后将它们相加/相乘/相除。我设法让它工作,但遇到了一个小问题。

这是困扰我的代码部分:

double number1 = 0;
do {
    try {
        System.out.print("First number: ");
        number1 = input.nextDouble();
    } catch (InputMismatchException e) {
        System.out.print("This is not a number. ");
    }
    input.nextLine();
} while (number1 == 0);

它非常适合我想要做的事情,即询问号码。如果用户没有输入数字,它会捕获异常并阻止其退出。

while (number1 == 0);

这是我用来测试 try 和 catch 是否按预期工作的方法,但当然意味着 number1 不能为 0,否则它不会停止并继续询问数字。

我希望它在未输入 double 值的情况下继续要求输入,我该如何替换?

因为这是一个分配,所以我必须不断要求一个double,如果最好不要使用异常,那是可以接受的。但它必须为 number1 分配一个数字,我稍后可以在程序中使用它

最佳答案

首先,您可以通过以下方式修改代码以使其正常工作 - 您可以添加一个 boolean 标志来指示循环已成功:

double number1 = 0;
boolean success;
do {
    success = true;
    try {
        System.out.print("First number: ");
        number1 = input.nextDouble();
    } catch (InputMismatchException e) {
        System.out.print("This is not a number. ");
        success = false;
    }
    input.nextLine();
} while (!success);

接下来,应该在调用 nextDouble 之前调用 hasNextDouble 重新编写代码以避免捕获异常:

double number1 = 0;
while(true) {
    System.out.print("First number: ");
    if (input.hasNextDouble()) {
        number1 = input.nextDouble(); // This will not throw an exception
        break;
    }
    System.out.print("This is not a number. ");
    input.nextLine();        
}

关于java - 检查输入以查看 Java 中的输入是否为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46637039/

相关文章:

java - 字符串的长度

Java:从父类(super class)继承的公共(public)方法调用私有(private)方法。

java - 我们可以在 ARCore 应用程序中突出显示所有检测到的平面吗?

java - 在 main 上序列化泛型类型

c# - 我怎样才能让 WinForms 停止默默地忽略未处理的异常?

java - 应用引擎 Java : NotSerializableException

java - 尝试在 Android 中使用 AESCounterRNG

TLB(加载字)异常是否会因错误的编译器选项使用而引起?

java - 为什么没有 OutOfMemoryError 子类?

java - 无法从spark中的java代码启 Action 业;初始作业尚未接受任何资源