这是否有资格作为转换声明?

时间:2015-10-10 20:57:56

标签: 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 >= 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

2 个答案:

答案 0 :(得分:3)

这不是switch语句。 Switch语句具有以下结构:

switch (dgrade) {
  case 90:
    doSomething();
    break;
  case 100:
    doSomethingElse();
    break;
  default:
    do();
}

在您的情况下,您实际上无法使用switch语句,因为您有条件,因此您只能使用if-else语句

答案 1 :(得分:0)

不,用switch-statement测试值是否在这样的区间内是不可能的。 Switch语句对于类型的每个单独的值都有一个分支,如果正在接通的值与分支的相等,则采用分支。

话虽如此,可以用更紧凑的方式编写代码:

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语句中测试了它。这没有考虑到值位于原始代码中两个不同区间的限制之间。

此处也不需要块({})。

请注意传统的空白用法,=两侧都有空格。