java - 为什么我的嵌套 if 语句没有将 int 变量向上迭代 1?

标签 java if-statement java.util.scanner

我正在尝试做什么

我希望我的 if 语句 boolean 值在输入超出范围时向上迭代变量。

问题

我输入的要由 if 语句检查的数字似乎不起作用。如果输入的 3 个数字小于 -6.0,或大于 12.3,则会记录失败,但我使用的 int 变量似乎从未改变。

我尝试过的

我尝试切换迭代顺序并仅使用 + 1,但“失败”变量始终保持为 0

import java.util.Scanner;

public class test {

    public static void main(String[] args) {

        String input = "a";
        double aNum1;
        double aNum2;
        double aNum3;
        int aFailures = 0;


        Scanner scnr = new Scanner(System.in);


        //Trix
        while (true) {

            System.out.println("Please enter a command:");
            input = scnr.next();


            if (input.equals("a")) {

                System.out.println("Enter number 1:");
                aNum1 = scnr.nextDouble();
                System.out.println("Enter number 2:");
                aNum2 = scnr.nextDouble();
                System.out.println("Enter number 3:");
                aNum3 = scnr.nextDouble();

                if (aNum1 <= -6.0 && aNum1 >= 12.3) {
                    ++aFailures;
                }
                if (aNum2 <= -6.0 && aNum2 >= 12.3) {
                    ++aFailures;
                }
                if (aNum3 <= -6.0 && aNum1 >= 12.3) {
                    ++aFailures;
                }
            }
            if (input.equals("f")) {

                System.out.println("Azuview failures: " + aFailures);
                break;

            }
        }
    }
}

当我输入超出 boolean 条件的数字时,我希望系统输出“Azuview Failures 2”,但程序似乎无法识别输入超出范围。 “aFailures”从 0 开始,但从 if 语句开始不会改变...

最佳答案

&& (AND) 运算符正在您的 if 中使用当你确实应该使用||时声明(或者)。 aNum1 <= -6.0 && aNum1 >= 12.3永远不会计算为 true,因为一个数字显然不能同时小于或等于 -6.0 且大于或等于 12.3。

至于程序的其余部分,我决定使用 for循环而不是使用三个单独的整数来检查相同的条件三次。

public static void main(String[] args) {
    String input = "a";
    int aFailures = 0;

    Scanner scnr = new Scanner(System.in);

    while (true) {
        System.out.println("Please enter a command:");
        input = scnr.next();

        if (input.equals("a")) {
            for (int i = 1; i <= 3; i++) {
                System.out.println("Enter number " + i + ": ");
                double num = scnr.nextDouble();
                if (num <= -6.0 || num >= 12.3)
                    aFailures++;
            }
        } else if (input.equals("f")) {
            System.out.println("Azuview failures: " + aFailures);
            break;
        }
    }
    scnr.close();
}

关于java - 为什么我的嵌套 if 语句没有将 int 变量向上迭代 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58359568/

相关文章:

java - 多次绘制位图

java - 如何在Java中使用一个循环进入另一个循环

java - 扫描仪分隔符获取由 ""和 "\n"java 分隔的标记

java - 使用 Java Scanner 顺序读取 stdin 时抛出异常

java - 我可以在弹出窗口中添加组合框和单选框吗?

java - 将超链接放入 Excel 中的图像中(Apache POI)

java - 从字符串加载类

excel - VBA If 语句不断运行 ifs

javascript - 没有花括号的 if 语句上的多个语句

R if else语句问题