“else if”语句中的逻辑运算符

我正在尝试学习“if else”语句,但在脚本的中间“if else”部分遇到了问题。


package practice;

import java.util.Scanner;

public class Practice {


public static void main(String[] args) {

    // TODO Auto-generated method stub


    Scanner in = new Scanner(System.in);

    System.out.println("enter a number between 1 and 10 ");

    if (!in.hasNextDouble()) {

        String word = in.next();

        System.err.println(word + " is not a number");

    } else if (!(in.nextDouble() > 0) || !(in.nextDouble() <= 10)) {

        Double wrongnumber = in.nextDouble();

        System.err.println(wrongnumber + " is not between 1 and 10");

    } else {

        System.out.println("It works!");

    }

       return;


   }


 }

没有错误,但在 'else if' 块中,我无法打印错误“..... 不在 1 和 10 之间”,无论我是否在 1 和 10 之间或更大的范围内输入数字。它也不会打印“它有效!” 当我添加'else if'块时不再行。任何建议将不胜感激。


千万里不及你
浏览 143回答 3
3回答

DIEA

你打in.hasNextDouble()了几次电话。每次它都会从输入中扫描新号码,因此可能会导致您的问题。您还应该考虑如何编写条件。我知道您可以尝试一下那里发生的事情,但这种情况很难阅读。您可以使用(number <= 1) || (number > 10)&nbsp;(通过反转运算符删除否定)例如。

慕莱坞森

else&nbsp;if&nbsp;(!(in.nextDouble()&nbsp;>&nbsp;0)&nbsp;||&nbsp;!(in.nextDouble()&nbsp;<=&nbsp;10))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Double&nbsp;wrongnumber&nbsp;=&nbsp;in.nextDouble();我不确定,但在这里你操作 3 个不同的数字。在条件之前,将其写入变量。不要将 int 与 double 进行比较
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java