if语句只识别Java中的某些整数

时间:2017-11-20 05:27:01

标签: java eclipse if-statement

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter value: ");
    int value = input.nextInt();

    if (value == 1 || value == 3 || value == 5 ||value == 7 || value == 9) {
        if (value % 3 == 0)
            System.out.println(value + " is an odd number less than 10"
                    + " and divisible by 3");
    }
    else if (value == 2 || value == 4 || value == 6 ||value == 8) {
        if (value % 3 == 0)
            System.out.println(value + " is an even number less than 10"
                    + " and divisible by 3");
    }
    else
        System.out.println("Invalid number");
    input.close();
}

if-else语句只识别可被3整除的整数 3 6或9 。例如,当我键入1或5时,程序不显示任何输入,只是停止运行。

5 个答案:

答案 0 :(得分:1)

如果您输入“1”,则if(value == 1)true,然后程序会检查if(value %3 == 0)。由于value%31,当值为1时,它不会打印任何内容并退出。所以什么也看不见。

通常,在任何IDE中都有一些调试工具,因此通过使用它们,您将能够逐步了解该程序的工作原理。

答案 1 :(得分:1)

我不知道你在if语句中使用这个特定逻辑的原因,但我们可以重构,假设你打印的内容实际上是你想要的:

  

是小于10的奇数/偶数,可以除以3

if (value < 10 && value % 2 == 1 && value % 3 == 0) {
    System.out.println(value + " is an odd number less than 10"
                + " and divisible by 3");
}
else if (value < 10 && value % 2 == 0 && value % 3 == 0) {
    System.out.println(value + " is an even number less than 10"
                + " and divisible by 3");
}
else {
    System.out.println("value does not meet our conditions.");
}

1和5明显导致代码无效的直接原因是它们输入第一个if语句但是后续条件失败,因为它们不能被3整除,并且您的代码不会输出这种情况。

答案 2 :(得分:0)

这是因为给定的逻辑。当您输入1或5作为输入时,如果变为真,则输入第一个外部。但是if(value % 3 == 0)并不正确,这就是为什么程序在没有提供任何输出的情况下结束的原因。 如果我理解您对此计划的期望,请尝试以下代码

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter value: ");
int value = input.nextInt();

if (value < 10 && value % 2 == 0 && value % 3 == 0) {
    System.out.println(value + " is an even number less than 10" + " and divisible by 3");

}
else if (value < 10 && value % 2 != 0 && value % 3 == 0) {
    System.out.println(value + " is an odd number less than 10" + " and divisible by 3");

}
else
    System.out.println("Invalid number");
input.close();

}

答案 3 :(得分:0)

例如,当您输入1或5时,下面的条件变为真

if(value == 1 || value == 3 || value == 5 || value == 7 || value == 9)

但是,值%3不等于0因此没有打印任何内容,程序控制直接转到

input.close();

答案 4 :(得分:0)

首先,你不应该使用if-else语句。现在,问题是当你输入1或5时,它们会传递第一个if语句,但是(1%3 == 0)或(5%3 == 0)都不是真的,这就是你的代码所做的这些情况都没有。试试这个:

if(value % 3 == 0 && value <10) {
    if(value % 2 != 0){
        System.out.println(value + " is an odd number less than 10"
                + " and divisible by 3"); 
    }else{
       System.out.println(value + " is an even number less than 10"
                + " and divisible by 3");
    }
}else{
    System.out.println("Invalid number");
}