簡體   English   中英

開關盒不起作用。 爪哇

[英]Switch case doesn't work. Java

我正在嘗試使用開關。 它適用於所有情況,只有一種情況與其他情況完全沒有區別。

它測試除以第一個數組(int)的13所得的余數,並以此將特定的值分配給第二個數組(Char)。

 public static char[] FindValue(int[] OCards) {
    char[] OValue = new char[5];
    int n;
    for (int i = 0; i < 5; i++) {
        n = OCards[i] % 13;
        switch (n) {
            case 0:
                OValue[i] = 'A';
                break;
            case 1:
                OValue[i] = '2';
                break;
            case 2:
                OValue[i] = '3';
                break;
            case 3:
                OValue[i] = '4';
                break;
            case 4:
                OValue[i] = '5';
                break;
            case 5:
                OValue[i] = '6';
                break;
            case 6:
                OValue[i] = '7';
                break;
            case 7:
                OValue[i] = '8';
                break;
            case 8:
                OValue[i] = '9';
                break;
            case 9:
                OValue[i] = '10'; //Error here 'unclosed character literal'
                break;
            case 10:
                OValue[i] = 'V';
                break;
            case 11:
                OValue[i] = 'D';
                break;
            case 12:
                OValue[i] = 'R';
                break;


        }
    }
    return OValue;
}

正如其他人指出的那樣,問題在於'10'不是字符

我們可以解決這個問題,同時省去了很多彎曲的手指:

n = OCards[i] % 13;
OValue[i] = "A23456789TVDR".charAt(n);

那一行替換您的整個switch語句。

不過,我不確定要使用的正確符號。 用英語,它將是一個T 但是用法語,您顯然不能將D用作damedix

您的錯誤是因為您試圖用兩個字符組成一個字符,而您只能用一個字符組成一個字符。

您將需要更改數組以存儲整數,或者如果需要存儲char的情況通常用'T'或't'進行更改。

Ovaluechar的數組; '10'不是一個單獨的字符。

怎么樣

  case 9:
            OValue[i] = 'T'; //use T char to stand for 10
            break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM