java中的嵌套if语句不读取第二个if语句

java中的嵌套if语句不读取第二个if语句,java,nested,Java,Nested,我有一个关于嵌套if语句的快速问题。我的代码需要检查用户输入是否为有效的双精度,并且它不是零,然后输出倒数。我可以让它检查输入是否有效并输出倒数,但当我尝试输入零时,它会终止程序。任何帮助都将不胜感激 import java.util.Scanner; public class Reciprocal { public static void main(String[]args){ Scanner stdin = new Scanner(System.in); Syste

我有一个关于嵌套if语句的快速问题。我的代码需要检查用户输入是否为有效的双精度,并且它不是零,然后输出倒数。我可以让它检查输入是否有效并输出倒数,但当我尝试输入零时,它会终止程序。任何帮助都将不胜感激

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

删除第二个
System.out.println(“倒数是”+1/数字)
或将其移动到
if
-块中

删除第二个
System.out.println(“倒数是”+1/数字)
或将其移动到
if
-块中

删除第二个
System.out.println(“倒数是”+1/数字)
或将其移动到
if
-块中

删除第二个
System.out.println(“倒数是”+1/数字)
或将其移动到
if
-块中

你搞错了。这一行:

System.out.println(“倒数为”+1/个)


正在执行,即使
number==0
,因为它已超出if语句。

您犯了一个错误。这一行:

System.out.println(“倒数为”+1/个)


正在执行,即使
number==0
,因为它已超出if语句。

您犯了一个错误。这一行:

System.out.println(“倒数为”+1/个)


正在执行,即使
number==0
,因为它已超出if语句。

您犯了一个错误。这一行:

System.out.println(“倒数为”+1/个)


即使在
number==0
时也会执行,因为它在if语句外。

内部if上没有其他值,因此它会检查它是否为0,不在if内执行代码,然后转到
System.out.println(“倒数是”+1/number)位于if语句之后的行


如果if语句只允许该行执行两次,那么if语句的意义是什么呢?内部if上没有其他代码,因此它检查它是否为0,不执行if中的代码,然后转到
System.out.println(“倒数是”+1/数字)位于if语句之后的行


如果if语句只允许该行执行两次,那么if语句的意义是什么呢?内部if上没有其他代码,因此它检查它是否为0,不执行if中的代码,然后转到
System.out.println(“倒数是”+1/数字)位于if语句之后的行


如果if语句只允许该行执行两次,那么if语句的意义是什么呢?内部if上没有其他代码,因此它检查它是否为0,不执行if中的代码,然后转到
System.out.println(“倒数是”+1/数字)位于if语句之后的行


如果if语句所做的只是允许该行执行两次,那么if语句的意义是什么呢?您使用的是
1/number
,即使number是
0
。其次,如果用户输入
0
,则else部分应该在if块内。它应该根据您的消息转到else部分

所以应该是这样,


您正在使用
1/number
即使number是
0
第二,如果用户输入
0
它应该根据您的消息转到else部分,您的else部分应该在if块内

所以应该是这样,


您正在使用
1/number
即使number是
0
第二,如果用户输入
0
它应该根据您的消息转到else部分,您的else部分应该在if块内

所以应该是这样,


您正在使用
1/number
即使number是
0
第二,如果用户输入
0
它应该根据您的消息转到else部分,您的else部分应该在if块内

所以应该是这样,

除以0错误

System.out.println("The Reciprocal is "+ 1/number);
如果数字不是0,则该行执行两次,如果数字是0,则执行一次。

除以0错误

System.out.println("The Reciprocal is "+ 1/number);
如果数字不是0,则该行执行两次,如果数字是0,则执行一次。

除以0错误

System.out.println("The Reciprocal is "+ 1/number);
如果数字不是0,则该行执行两次,如果数字是0,则执行一次。

除以0错误

System.out.println("The Reciprocal is "+ 1/number);

如果数字不是0,则该行将执行两次,如果数字是0,则执行一次。

查看您的代码

double number = stdin.nextDouble();
if (number != 0) {
    System.out.println("The Reciprocal is " + 1 / number);
  }
System.out.println("The Reciprocal is " + 1 / number); //*
无论
条件是否满足,我放置的行*将始终执行

您可以将代码更改为以下内容

double number = stdin.nextDouble();
if (number != 0) {
   System.out.println("The Reciprocal is " + 1 / number);
}else {
   System.out.println("The Not Reciprocal is");
}

看看你的代码

double number = stdin.nextDouble();
if (number != 0) {
    System.out.println("The Reciprocal is " + 1 / number);
  }
System.out.println("The Reciprocal is " + 1 / number); //*
无论
条件是否满足,我放置的行*将始终执行

您可以将代码更改为以下内容

double number = stdin.nextDouble();
if (number != 0) {
   System.out.println("The Reciprocal is " + 1 / number);
}else {
   System.out.println("The Not Reciprocal is");
}

看看你的代码

double number = stdin.nextDouble();
if (number != 0) {
    System.out.println("The Reciprocal is " + 1 / number);
  }
System.out.println("The Reciprocal is " + 1 / number); //*
无论
条件是否满足,我放置的行*将始终执行

您可以将代码更改为以下内容

double number = stdin.nextDouble();
if (number != 0) {
   System.out.println("The Reciprocal is " + 1 / number);
}else {
   System.out.println("The Not Reciprocal is");
}

看看你的代码

double number = stdin.nextDouble();
if (number != 0) {
    System.out.println("The Reciprocal is " + 1 / number);
  }
System.out.println("The Reciprocal is " + 1 / number); //*
无论
条件是否满足,我放置的行*将始终执行

您可以将代码更改为以下内容

double number = stdin.nextDouble();
if (number != 0) {
   System.out.println("The Reciprocal is " + 1 / number);
}else {
   System.out.println("The Not Reciprocal is");
}

即使是零值,你也会尝试得到“1/number”,所以你会得到一个被零除的异常,我想这就是你的程序停止的原因。我得到的信息是,
倒数是无穷大。您希望得到什么?我需要程序打印出您输入的输入无效,请重试。我可以得到任何一个=0行工作,或者hasNextDouble工作,但是我不能让它们都工作,即使是零值,你尝试得到“1/number”,所以你得到一个被零除的异常,我想这就是你的程序停止的原因。我得到消息
倒数是无穷的
。您希望得到什么?我需要程序打印出您输入的输入无效,请重试。我可以得到任何一个=0行工作,或者hasNextDouble工作,但我无法同时获得它们