如何将if语句转换为switch语句

时间:2017-04-27 22:52:07

标签: java

我的代码应该将分数转换为字母等级,所以我使用if语句。只是想知道是否有一种方法可以使用switch语句而不是if语句。我不知道如何转换它。还有,一个比另一个好吗?

   public static void determineGrade(int numArray[], char letterArray[]) {

   int scoreCount = numArray.length;

   for (int i=0; i < scoreCount; i++) {

        if (numArray[i] >= 90 && numArray[i] <=100) {
            letterArray[i] = 'A';
        }           
        if (numArray[i] >= 80 && numArray[i] < 90) {
            letterArray[i] = 'B';

        }
        if (numArray[i] >= 70 && numArray[i] < 80) {
            letterArray[i] = 'C';

        }
        if (numArray[i] >= 60 && numArray[i] < 70) {
            letterArray[i] = 'D';

        }
        if (numArray[i] >= 0 && numArray[i] < 60) {
            letterArray[i] = 'F';
        }
  }
   displayTestScores(numArray, letterArray);

4 个答案:

答案 0 :(得分:1)

public char getGrade(int input){
    switch(input/10)
    {
        case 9: return 'A';
        case 8: return 'B';
        case 7: return 'C';
        case 6: return 'D';
        default: return 'F';
    }
}

然后

for (int i=0; i < scoreCount; i++) {
    letterArray[i] = getGrade(numArray[i]);
}

答案 1 :(得分:0)

您的条件是范围。 Java switch语句包含的大小写,而不是范围。

由于您的案例数量有限,您可以单独列出每一个案例。但是,这会使您的代码更长,有100个案例。

还有一些数学技巧可以找到可被10整除的较低数字,并打开它。但是if语句更易于实现和阅读。

所有这一切,如果您使用if语句而不是独立的else,则if语句中的第二个表达式是不必要的。并且你想使用else,因为在符合条件的第一个案例之后继续检查所有剩余案例是愚蠢的。

    if (numArray[i] >= 90 ) {  // Can you have values > 100?
        letterArray[i] = 'A';
    }           
    else if (numArray[i] >= 80 ) {  // If we're checking this, we know numArray[i] < 90
        letterArray[i] = 'B';
    }
    else if ... 

答案 2 :(得分:0)

你可以在这种情况下切换声明,但我不推荐,因为你会有太多的情况。由于您的if语句条件,您将使用至少100个案例进行输入。

case 100 ://code
    break;
case 50 ://skip a bit
case 0 :

案件太多,浪费时间和精力。

答案 3 :(得分:-1)

您正在寻找生成具有基于范围的案例的switch语句。它并不是真正意义上的switch语句。如果路线更优雅/更好的解决方案imo。

In Java,Using switch statement with a range of value in each case?