开关盒不起作用。 Java的

时间:2014-12-08 00:18:08

标签: java switch-statement

我试图使用开关。它适用于所有情况,除了与其他情况完全没有区别的情况。

它通过第一个数组(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;
}

4 个答案:

答案 0 :(得分:3)

正如其他人所说,问题是'10'不是字符

我们可以解决这个问题,同时保存你的手指很多弯曲:

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

这一行替换了整个switch语句。

但是,我不确定使用正确的符号。在英语中,它将是T。但是在法语中,您显然无法将D用于 dame dix

答案 1 :(得分:2)

您的错误是因为您尝试使用两个字符制作一个字符,而您只能使用一个字符制作一个字符。

您需要更改数组以存储整数,或者如果您需要使用'T'或't'来存储char,则通常会这样做。

答案 2 :(得分:1)

Ovaluechar s的数组; '10'不是单个字符。

答案 3 :(得分:1)

怎么样

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