我正在使用 intellij 和 java 制作一个程序,可以根据用户的输入计算用户的成绩。到目前为止,我已经使用扫描仪成功收集了用户的输入并得到了平均值。我正在使用平均值通过 else 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 ); }}}我希望程序检查所有其他 if 语句,但如果平均分数为 60 或更高,它不会打印成绩语句,而只会显示平均值。
2 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
问题是你的 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
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
您必须分两步完成,因为这里仅在一种情况下打印:
检查属于哪个范围
avg
并设置等级打印成绩
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());
添加回答
举报
0/150
提交
取消