-6

文字の等級を取得して対応する GPA を返す switch ステートメントがあります。ただし、文字 (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;
    }
4

1 に答える 1

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;
}

等級がそれらのいずれでもない状況では、おそらくデフォルトのケースも用意する必要があります。

ああ、あなたのコードは次のように書くこともできます:

nv[i] = "FDCBA".indexOf(grade);

その後、-1であることをチェックしnv[i]ます (グレードがそのセットに含まれていなかったことを意味します)。

于 2013-01-23T18:00:40.943 に答える