【问题标题】:else if statement not workingelse if 语句不起作用
【发布时间】:2015-05-05 21:10:00
【问题描述】:

我是 Java 新手,我真的是在自学。我正在练习 else 和 if 语句。我已经编写了以下非常基本的评分程序,但我无法让所有 else if 语句正常工作,它调用前两个,我可以让它显示 A 和 B 成绩,但不能显示其余的,我有尝试移动和移除波浪形的括号等,但仍然无法正常工作。 请帮助并原谅我的无知,因为我是 Java 编程新手。

提前致谢。

public class Grade {

    public static void main(String[] arguments) {
        int grade = 69;
        if (grade > 90) {
            System.out.println("Well done you got a A"); 
        } else if (grade < 90) { 
            System.out.println("Well done you got a B");
        } else if (grade < 85) {
            System.out.println("You got a C");
        } else if (grade < 75) {
            System.out.println("You got a D");
        } else if (grade < 75) {
            System.out.println("You got a E");
        }  else {
            System.out.println("You got a F");
        }
    }

}

【问题讨论】:

  • 除 90 以外的每个数字都低于或高于 90。因此,对于每个整数,只满足前两个条件。第二个条件大概应该是else if (grade &gt;= 85 &amp;&amp; grade &lt; 90)等等。
  • ... 或 if(grade &gt; 90) {...} else if(grade &gt; 85) {...}

标签: java if-statement conditional-statements


【解决方案1】:

如果有 69 个if (grade &lt; 90) 为真则不会执行它下面的其他if

改为

  if (grade >= 90) {
        System.out.println("Well done you got a A"); 
    } else if (grade >= 85) { 
        System.out.println("Well done you got a B");
    } else if (grade >= 75) {
        System.out.println("You got a C");
    } else {
        System.out.println("You got a D");
    }

如果要添加更多成绩,请在上面添加更多else if(){} 还记得将else{} 条件放在最后,这样如果没有选项为真,则将执行其他操作。

同时检查Java Docs

【讨论】:

    【解决方案2】:

    将您的代码更改为:

    public class Grade {
    
    public static void main(String[] arguments) {
        int grade = 69;
        if (grade >= 90) {
            System.out.println("Well done you got a A"); 
        } else if (grade >= 85) { 
            System.out.println("Well done you got a B");
        } else if (grade >= 75) {
            System.out.println("You got a C");
        } else if (grade >= 65) {
            System.out.println("You got a D");
        } else if (grade >= 55) {
            System.out.println("You got a E");
        }  else {
            System.out.println("You got a F");
        }
    }
    }
    

    因为 69 小于 90,所以第二个 if 为真,这个人会得到 B,尽管他应该有一个 D。如果第一个 if 失败(这意味着成绩低于 90,那么你检查成绩是否大于或等于 85(然后得到 B),否则检查它是否大于或等于 75 等等

    【讨论】:

    • 如果成绩正好是 90 会怎样?你得到一个 F. 这不可能是正确的。
    • 你说得对,我编辑了我的代码。我不知道他是否想将其设置为 A(我假设是这样)...
    • 哇,感谢所有快速响应的家伙。感谢您的帮助,很抱歉成为新手。
    • 不用担心。如果我的答案很好,请在我的答案左侧的接受框中打勾。谢谢
    【解决方案3】:

    如果输入0作为标记,它将满足第一个else if条件,即0

    if (grade>85 && grade<90)
        System.out.Print("Grade here");
    

    【讨论】:

      【解决方案4】:

      比较符号是错误的。总会落入第一个或第二个if。您必须始终测试更高,而不是更低

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多