如果声明,这个别的错误是什么?

时间:2015-02-04 02:12:15

标签: java

package javaPackage;
import java.util.Scanner;

public class EmployeeTest {

    public static void main(String[] args) 
    {
        Scanner imput = new Scanner(System.in);

        int test1Score;
        int test2Score;

        System.out.print("Enter first test score:");
        test1Score = imput.nextInt();
        System.out.print("Enter second test score:");
        test2Score = imput.nextInt();

        if((test1Score > 90) && (test2Score > 90))
        {
            System.out.println("\nYou are promoted to manager");
        }

        else if((test1Score > 90) || (test2Score >90))
        {
            System.out.println("\nYou are promoted to supervisor");
        }

        else if(!(test1Score>90))
        {

            System.out.println("\nYou are not promoted");
        }

    }

}

一切似乎都有效。然而,在第二个if if语句中,如果我输入89作为第一个测试分数,我得到第一个if的输出if。我应该告诉我“你没有晋升”。它似乎只检查其他是否与逻辑OR。 我刚刚学习java。我一定不能看到什么。

4 个答案:

答案 0 :(得分:1)

您的逻辑取决于两个变量的值。您在问题描述中只提供了一个,因此我假设第二个不符合AND语句的条件。

对于第一个导致TRUE的条件,两个值都必须超过90.

答案 1 :(得分:0)

谢谢,似乎逻辑没有意义。我正在练习一本名为“My First in Java”的书中的例子。看来这本书编写得不是很好。  我将第二个if语句改为:

否则if(test1Score< 90&& test2Score< 90){         System.out.println(“\ n你不升职”);

答案 2 :(得分:0)

从你的代码我认为它应该打印 1."你晋升为经理"只有当两个测试分数都大于90时 2."你晋升为主管"如果两个测试分数中的任何一个大于90 3."你没有晋升"如果两个考试成绩都低于91

所以你只需要包含' test2Score'如果条件如下所示,在你的第二个其他地方。

if((test1Score > 90) && (test2Score > 90))
        {
            System.out.println("\nYou are promoted to manager");
        }

        else if((test1Score > 90) || (test2Score >90))
        {
            System.out.println("\nYou are promoted to supervisor");
        }

        else     //((test1Score <= 90) && (test2Score <= 90))
        {
            System.out.println("\nYou are not promoted");
        }

但如果你想打印&#34;你没有被提升&#34;当test1Score&lt; = 90而不管test2Score时,你必须相应地修改你的if条件。

答案 3 :(得分:0)

问题是,如果州政府有逻辑错误,则第二个。 &gt; 90应该&lt; 90.否则,该陈述是多余的。但是考虑将第二个if else只是一个else来简化和处理所有其他可能的排列。不要在这里挑选,但是当代码变得更复杂时,找到这些东西会变得更加困难。希望这有助于编码。