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。実際には、実際には 16 進数'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表現が数値自体と同じであると考えていることです-そうではありません。 ASCII文字 (厳密には Unicode ですが、この目的では ASCII と仮定できます) を表すため、文字のコードはchars数値ではありません。この問題を解決するには、比較でリテラルを使用するだけです。00char

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

常にシングルコートで文字リテラルを設定する必要があります

すなわち

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