2013-08-16 57 views
0

我在檢測if語句中的CHAR時遇到了一些麻煩。 我有一個分數整數,我做了一個字符串,並從字符串,我做了一個字符數組。 我的問題是,當我嘗試檢測字符是什麼數字時,它返回「Error.png」。嘗試檢測if語句中的字符

請幫我:)

代碼:

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); 
    } 
+0

「與設置字符文字*返回「Error.png」*「>這是你的方式說有編譯器錯誤?如果是這樣,請將來實際發佈編譯器錯誤。 –

+0

你的if結構可以用一個很好的數組查找來替代:http://ideone.com/pQ0Yen - 你只需要將你的'i0'變成'i9'變量到一個數組中並像'i [0]一樣訪問它們' 。 – zapl

回答

4

scoreA[counter] == 1字符比較1的數值,這是不正確的。 '1'1不一樣。實際上,'1'實際上等於31(十六進制)。使用類似的東西:

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

我明顯包括一個短片段,但它應該是足夠的。

0

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

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

你的錯誤是認爲對數字的char表示是一樣的數字本身 - 他們不是。 chars代表ASCII字符(嚴格來說是unicode,但爲此目的,我們可以假設爲ASCII),因此字符0的代碼不是數字0。爲了解決這個問題,你可以只使用char文字在您的比較:

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

你總是有單大衣

scoreA[counter] == '0'