2015-01-28 2 views
0

Просто краткое описание того, что я делаю - у меня есть генератор случайных уравнений и кнопки со всеми цифрами. Чтобы ответить на вопрос, пользователь должен щелкнуть соответствующие кнопки, чтобы сформировать вопрос (цифры записываются слева направо), например. 9 + 6 = пользователь нажимает 1 и 5. Если ответ правильный, должно появиться другое уравнение. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что SOMETIMES, когда ответ представляет собой одну цифру, не обнаруживает никакого нового уравнения, никаких ошибок или чего-то еще. Просто ничего не происходит. В большинстве случаев это происходит, когда ответ «0». Любая идея, что может быть причиной этого? Вот часть кода:Проверенные чеки?

public void checkAnswer(){  
    int answer = question.getAnswer();  
     if(ansID2==-1){ 
      if(String.valueOf(answer).equals(String.valueOf(ansID1))){ 
       makeEquation(); 
      } 
     }else{ 
      if(String.valueOf(answer).equals(String.valueOf(ansID1) + String.valueOf(ansID2))){ 
       makeEquation(); 
      } 
     } 
} 

ansID2 установлен быть -1 так, если ответ будет только одна цифра вторая цифра место пропускается. ansID 's назначаются, когда нажата кнопка с цифрой.

checkAnswer вызывается с помощью кнопки "Проверить ответ" со следующим кодом

EventHandler checkHandler = new EventHandler(){  
     @Override 
     public void handle(Event arg0) { 
      checkAnswer();   
     } 
    }; 

ansID2 устанавливается равным -1 в объявлении поля

+1

Вы можете показать, где ansID2 установлен в -1? и откуда вызывается checkAnswer? – Jimmy

+1

Почему вы конвертируете в 'String' и выполняете сравнения String, когда ваши входы имеют принципиально числовые значения? –

+0

@JohnBollinger, потому что у меня разные типы уравнений - «+», «-», «*» - и, хотя сравнение строк будет быстрее и с меньшим количеством кода (в противном случае я должен ввести дополнительную проверку для типа из уравнения) – Phantomazi

ответ

1

Я хотел бы сделать это численно:

public void checkAnswer(){  
    int answer = question.getAnswer(); 
    int response = ansID1; 

    if(ansID2 >= 0) { 
     response = 10 * response + ansID2; 
    } // else a one-digit response 
    if (answer == response) { 
     makeEquation(); 
    } 
} 

Как минимум, это более эффективно, чем выполнение всех операций с строкой, которые вы выполняете в исходном коде. С учетом сказанного, я не понимаю, почему эта версия приведет к другим результатам. Я склонен предположить, что ваша настоящая проблема находится в другом месте, например, ответ или цифры ответа неверны.

В частности, вы говорите

ansID2 установлено значение -1 в объявлении поля

но это не является достаточным лишь до тех пор, первый вопрос с двузначным ответ, который заставит ansID2 для чего-то другого. Он (а также ans1ID) должен быть сброшен при создании нового уравнения.

+0

Как вы сказали - ничего не изменилось, точный момент, когда я получил уравнение с одной цифрой в качестве ответа, поколение новых уравнений прекратилось. – Phantomazi

+0

Рассмотрите комментарии, которые я добавил об перезагрузке ваших переменных, особенно 'ansID2'. –

+0

Это было полевое объявление. Я пропустил его сброс после каждого уравнения. Спасибо ! – Phantomazi

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

  • Нет связанных вопросов^_^