我正在创建需要 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/