试图在if语句中检测字符

时间:2013-08-16 13:25:30

标签: java string if-statement numbers char

我在if语句中检测到CHAR时遇到了一些麻烦。 我有一个得分整数,我在一个字符串中,并从字符串,我做了一个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 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:0)

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

if(scoreA[counter] == '1')

答案 2 :(得分:0)

你的错误是认为数字的char表示与数字本身相同 - 它们不是。 chars代表ASCII个字符(严格来说是unicode,但为此目的我们可以假定为ASCII),因此字符0的代码不是数字0。要解决此问题,您只需在比较中使用char文字:

        if(scoreA[counter] == '0') drawT = i0;
        else if(scoreA[counter] == '1') drawT = i1;
        ... etc

答案 3 :(得分:0)

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

<强>即

scoreA[counter] == '0'