我有一个关于嵌套if语句的快速问题。我的代码需要检查用户输入是否为有效的double并且它不是零,然后输出倒数。我可以让它检查输入是一个有效的输入并输出倒数,但当我尝试输入一个零时它终止程序。任何帮助将不胜感激!
import java.util.Scanner;
public class Reciprocal {
public static void main(String[]args){
Scanner stdin = new Scanner(System.in);
System.out.println("Please enter in a non-zero number");
if (stdin.hasNextDouble()) {
double number = stdin.nextDouble();
if (number != 0) {
System.out.println("The Reciprocal is " + 1 / number);
}
System.out.println("The Not Reciprocal is");
} else {
System.out.println(" The input you entered is invalid, please try again.");
}
}
}
答案 0 :(得分:1)
删除第二个System.out.println("The Reciprocal is "+ 1/number);
或将其移至if
- 块。
答案 1 :(得分:1)
您正在使用1/number
,即使数字为0
,如果用户输入0
,您的其他部分应位于if块内,则应根据您的消息转到其他部分
所以它应该是这样的,
if(stdin.hasNextDouble()){
double number = stdin.nextDouble();
if(number !=0){
System.out.println("The Reciprocal is "+ 1/number);
}
else{
System.out.println("Wrong Input!");//If input is 0
}
}else {
System.out.println("Invalid Input");//If input is not double value
}
答案 2 :(得分:1)
除以0错误。
System.out.println("The Reciprocal is "+ 1/number);
如果number不为0,则该行完成两次,如果为0则该行为。
答案 3 :(得分:0)
你有一个错误。这一行:
System.out.println("The Reciprocal is "+ 1/number);
正在执行number == 0
,因为你已经将它从句子中删除了。
答案 4 :(得分:0)
内部if上没有其他内容,因此它检查它是否为0,不执行if中的代码,然后转到if语句之后的System.out.println("The Reciprocal is "+ 1/number);
行。
if语句有什么意义,如果只是允许该行执行两次
答案 5 :(得分:0)
看看你的代码
double number = stdin.nextDouble();
if (number != 0) {
System.out.println("The Reciprocal is " + 1 / number);
}
System.out.println("The Reciprocal is " + 1 / number); //*
第一行放*将始终执行if
条件是否满足。
您可以将代码更改为以下内容。
double number = stdin.nextDouble();
if (number != 0) {
System.out.println("The Reciprocal is " + 1 / number);
}else {
System.out.println("The Not Reciprocal is");
}