2013-10-08 4 views
1

я просто интересно, если мой код правильно, потому что мой счет счетчик не увеличивается здесь мой кодScore счетчик не увеличивает

result=ans*ans2; 
holdV=(Integer.parseInt(mystr)); 
Boolean b=(holdV==result); 
int i=0; 
if(b){ 
    i++; 
    score.setText(""+i); 
} 

всякий раз, когда я запускаю мое приложение, она перемещается в одно и то остановить рост даже если вы получили правильный ответ. это реализация приложения для Android.

+1

is b true/false? и какое значение вы получите для score.setText (??) –

+0

b истинно, а затем значение оценки - это увеличенное значение i. – user2699948

ответ

5

Вы всегда устанавливается значение 0 здесь:

int i=0; // <--set to 0 
if(b){ 
    i++; // <-- increment: result will be 1 
    score.setText(""+i); 
} 

Вы должны я объявлять и инициализировать вне цикла, что-то вроде этого:

int i=0; 
while(someCondition) { 

//.. code, acquiring answer, etc 

    result=ans*ans2; 
    holdV=(Integer.parseInt(mystr)); 
    Boolean b=(holdV==result); 

    if(b){ 
    i++; // <-- increment: result will be 1 
    score.setText(""+i); 
    } 

} 
+0

Чтобы решить, перенесите это 'i' в объявление поля или вне этой области. – Geros

+1

@Glenn Я думаю, что это зависит от проблемы. Кажется, что это пробег вопроса о домашнем задании мельницы, наиболее вероятное решение легче по весу: я предложил просто вымыть его за пределы петли – ppeterka

-1

использовать во время цикла вместо если (только ответьте на ваш вопрос)

result=ans*ans2; 
holdV=(Integer.parseInt(mystr)); 
Boolean b=(holdV==result); 
int i=0; 
while(b){ 
    i++; 
    score.setText(""+i); 
} 
+0

Ниццкая бесконечная петля ... – ppeterka

+0

@ ppeterka66 Я только что указал, где произошла ошибка. .. и вопрос не полный ... так как вы можете дать while цикл, я думаю, что ваш ответ не будет работать должным образом, не зная правильных значений mystr, ans, ans2, hold – Riskhan

+0

Я не согласен. В этой текущей форме ваш ответ может ** никогда не функционировать должным образом **, независимо от условий, окружающих код. Существенное различие между моим и вашим ответом заключается в том, что _assuming правильные условия_ (например, значения других переменных) моя _can_ работает правильно. Что делает ваш код в случае, если 'b' истинно: увеличивает' i' и печатает строку до конца света. ** Нет нормального способа разбить цикл **, так как 'b' является локальной переменной. Я думаю, что этот результат не является желательным. – ppeterka

Смежные вопросы