我正在使用 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個贊
您必須分兩步完成,因為這里僅在一種情況下打?。?/p>
檢查屬于哪個范圍
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
提交
取消