2013-08-16 2 views
0

У меня возникли проблемы с обнаружением CHAR в инструкции if. У меня есть целое число баллов, которое я сделал в String, и из строки я создал char Array. Моя проблема в том, что, когда я пытаюсь определить, какое число занимает символ, он возвращает «Error.png».Попытка обнаружить символы в if-statement

Пожалуйста, помогите мне :)

код:

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

«* возвращает the 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' 
Смежные вопросы