为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 else if 语句?

如何修复 else if 语句?

紫衣仙女 2023-08-09 15:28:28
我正在使用 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



查看完整回答
反对 回复 2023-08-09
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

您必须分两步完成,因为这里仅在一种情况下打印:

  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());


查看完整回答
反对 回复 2023-08-09
  • 2 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信