如何解决其他if语句?

时间:2019-09-18 20:20:55

标签: java intellij-idea

我正在使用intellij&java制作一个可以根据用户输入来计算用户等级的程序。到目前为止,我已经成功地使用扫描仪收集了用户的输入并获得了平均值。我使用平均值通过if语句打印字母等级。但是我的程序仅打印出F级的字母成绩,即使我输入的平均分数为90,也不会打印其他任何字母。

字符串等级;

    if (avg >= 90.0 ) {
        grade = "A";
    } else if (avg >=80.0) {
        grade = "B";
    } else if (avg >=70.0){
        grade = "C"
    } else if (avg >=60.0) {
        grade = "D";
    } else {
        grade = "F";
        System.out.println("Grade is  " + grade );
    }
}
}

我希望程序检查语句是否其他,但是如果成绩的平均分数为60或更高,则不会打印成绩为statement的语句,而只会显示平均值。

2 个答案:

答案 0 :(得分:2)

问题在于您的print语句位于else块内,但您不想仅在else确实要始终打印且应位于if-else块之外时才打印。

if(A){
   ....// here you are when A is true
 } else if(B){
   .... //here you are when A is false and B is true
 } else {
   .... //here you will be when A and B are false
 }
 System.out.println("grade is:"+ grade); //here you are outside the else block so It does not depend on A nor on B value

答案 1 :(得分:1)

您必须分两步进行操作,因为此处仅在一种情况下打印:

  1. 检查avg在哪个范围内并设置等级
  2. 打印成绩
if (avg >= 90.0) {
    grade = "A";
} else if (avg >= 80.0) {
    grade = "B";
} else if (avg >= 70.0) {
    grade = "C";
} else if (avg >= 60.0) {
    grade = "D";
} else {
    grade = "F";
}
System.out.println("Grade is  " + grade);

此外,对于范围问题,我刚刚发现NavigableMap的用法像

NavigableMap<Double, String> map = new TreeMap<>();
map.put(0.0, "F");
map.put(60.0, "D");
map.put(70.0, "C");
map.put(80.0, "B");
map.put(90.0, "A");
System.out.println("Grade is " + map.floorEntry(avg).getValue());

此处的详细信息Using java map for range searches