Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是否符合switch语句的条件?_Java_Switch Statement - Fatal编程技术网

Java 这是否符合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 >=

我必须将其用作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
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。不公平!