0

我在 if 语句中检测 CHAR 时遇到了一些麻烦。我有一个分数整数,我把它做成了一个字符串,然后从这个字符串中,我做了一个 char 数组。我的问题是,当我尝试检测字符是什么数字时,它返回“Error.png”。

请帮我 :)

代码:

    scoreString = "" + score;
    System.out.println(scoreString + "  -  " + scoreString.length());
    scoreA = scoreString.toCharArray();
    for(int counter = 0; counter < scoreString.length(); counter++){
            Texture drawT;
            if(scoreA[counter] == 0) drawT = i0;
            else if(scoreA[counter] == 1) drawT = i1;
            else if(scoreA[counter] == 2) drawT = i2;
            else if(scoreA[counter] == 3) drawT = i3;
            else if(scoreA[counter] == 4) drawT = i4;
            else if(scoreA[counter] == 5) drawT = i5;
            else if(scoreA[counter] == 6) drawT = i6;
            else if(scoreA[counter] == 7) drawT = i7;
            else if(scoreA[counter] == 8) drawT = i8;
            else if(scoreA[counter] == 9) drawT = i9;
            else drawT = error;
            MainClass.batch.draw(drawT, 5 + (9 * counter), 95);
    }
4

4 回答 4

4

scoreA[counter] == 1将一个字符与数值 1 进行比较,这是不正确的。'1'不是一回事1。实际上,'1'实际上等于31十六进制。使用类似的东西:

if(scoreA[counter] == '0') drawT = i0;
else if(scoreA[counter] == '1') drawT = i1;
//continue on

我显然包含了一个简短的片段,但它应该足够了。

于 2013-08-16T13:27:20.477 回答
0

你想要字符文字。你需要写

if(scoreA[counter] == '1')
于 2013-08-16T13:27:27.457 回答
0

您的错误是认为数字的char表示与数字本身相同-事实并非如此。 chars表示ASCII字符(严格来说是 unicode,但为此我们可以假设 ASCII),所以字符的代码0不是数字0。要解决此问题,您可以char在比较中使用文字:

        if(scoreA[counter] == '0') drawT = i0;
        else if(scoreA[counter] == '1') drawT = i1;
        ... etc
于 2013-08-16T13:28:53.113 回答
0

总是你必须在单件外套中设置字符文字

IE

scoreA[counter] == '0'
于 2013-08-16T13:28:57.643 回答