Java 这是否符合switch语句的条件?
我必须将其用作switch语句。这是一个switch语句,对吗Java 这是否符合switch语句的条件?,java,switch-statement,Java,Switch Statement,我必须将其用作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 >=
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
if(dGrade>93.99){strFGrade=strA;}//A=94以上
否则,如果(dGrade>=90.00&&dGrade=87.70&&dGrade=83.33&&dGrade=80.00&&dGrade=75.00&&dGrade=70.00&&dGrade=60.00&&dGrade,则这不是switch语句。switch语句具有以下结构:
switch (dgrade) {
case 90:
doSomething();
break;
case 100:
doSomethingElse();
break;
default:
do();
}
在您的情况下,您不能实际使用switch语句,因为您有条件,所以只能使用if else
语句否,无法使用switch语句测试值是否位于这样的间隔内。switch语句对类型的每个单独值都有一个分支,如果值b接通的开关等于分支的开关
也就是说,您可以用更简洁的方式编写代码,如下所示:
if (dGrade >= 94.00) strFGrade = strA;
else if (dGrade >= 90.00) strFGrade = strLA;
else if (dGrade >= 87.70) strFGrade = strHB;
else if (dGrade >= 83.33) strFGrade = strB;
else if (dGrade >= 80.00) strFGrade = strLB;
else if (dGrade >= 75.00) strFGrade = strHC;
else if (dGrade >= 70.00) strFGrade = strC;
else if (dGrade >= 60.00) strFGrade = strD;
else strFGrade = strF;
这里的诀窍是,您可以省略一半的测试,因为您已经在前面的if语句中对其进行了测试。这没有考虑到值可能位于原始代码中两个不同间隔的限制之间
这里也不需要块(带有{
和}
)
请注意传统的空格用法,=
两侧都有空格。不,switch语句有特殊的语法,它不仅仅是if语句类型的名称(但它们是相似的)。请参见:但公平地说,此代码在其状态下无法直接转换为switch命令,除非您使用完全没有意义的“switch(true)”反模式。虽然这不能转换为开关
,但这并不意味着它不能用更少的代码重写。这段代码只是请求使用Java枚举
。我也要指出,这段代码有缺陷,在大型生产系统中无法正常工作。如果dGrade
具有该值,会发生什么83.325?在这种情况下,strFGrade=strF。不公平!