切换声明(字符)

Ins*_*ing -6 java switch-statement

我有一个switch语句,它接受字母等级并返回相应的GPA; 但是,它会为字母(A,B,C,D和F)抛出一个无法找到符号的错误!我已经检查了javaDocs的指导,但找不到问题.导致此错误的原因是什么?

switch (grade) {
        case A:  nv[i] = 4; //nv = numerical value
                 break;
        case B:  nv[i] = 3;
                 break;
        case C:  nv[i] = 2;
                 break;
        case D:  nv[i] = 1;
                 break;
        case F:  nv[i] = 0;
                 break;
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

A不是有效的字符文字 - 'A'是.

所以你要:

switch (grade) {
    case 'A':  nv[i] = 4; //nv = numerical value
             break;
    case 'B':  nv[i] = 3;
             break;
    case 'C':  nv[i] = 2;
             break;
    case 'D':  nv[i] = 1;
             break;
    case 'F':  nv[i] = 0;
             break;
}
Run Code Online (Sandbox Code Playgroud)

对于等级不是其中之一的情况,您也应该有一个默认情况.

哦,你的代码也可以写成:

nv[i] = "FDCBA".indexOf(grade);
Run Code Online (Sandbox Code Playgroud)

nv[i]之后检查为-1(意味着等级不在该组中).