嵌套的if语句在java中没有读取第二个if语句

时间:2014-10-06 12:00:18

标签: java nested

我有一个关于嵌套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.");
    }
    }
}

6 个答案:

答案 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");
}