【发布时间】:2015-10-10 20:57:56
【问题描述】:
我必须将其用作 switch 语句。这是一个switch语句,对吧?
if (dGrade > 93.99) {strFGrade= strA;} //A= above 94
else if (dGrade >= 90.00 && dGrade <= 93.99 ) {strFGrade= strLA;} //A- = 90-93.99
else if (dGrade >= 87.70 && dGrade <= 89.99) {strFGrade= strHB;} //B+= 87.7-89.99
else if (dGrade >= 83.33 && dGrade <= 87.69) {strFGrade= strB;} //B= 83.33-87.69
else if (dGrade >= 80.00 && dGrade <= 83.32 ) {strFGrade= strLB;} //B- = 80-83.32
else if (dGrade >= 75.00 && dGrade <= 79.99 ) {strFGrade= strHC;} //C+= 75-79.99
else if (dGrade >= 70.00 && dGrade <= 74.99 ) {strFGrade= strC;} //C= 70-74.99
else if (dGrade >= 60.00 && dGrade <= 69.99 ) {strFGrade= strD;} //D=60-69.99
else {strFGrade= strF;} //F= below 60
【问题讨论】:
-
不,switch 语句有特殊的语法,它不仅仅是一种 if 语句的名称(但它们是相似的)。看到这个:docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
-
但是公平地说,除非你使用完全没有意义的“switch(true)”反模式,否则这段代码在它的状态下不能直接转换成 switch 命令。
-
虽然这不能转换成
switch,但这并不意味着它不能用更少的代码重写。 -
这段代码只是乞求使用 Java
enum。 -
我还想指出,这段代码存在漏洞,在大型生产系统中无法正常工作。如果
dGrade的值是 83.325,会发生什么?在这种情况下,strFGrade = strF。不公平!
标签: java switch-statement