Я запрограммировал какую-то викторину. Во-первых, пользователи могут задавать вопросы и отвечать на них. Они сохраняются в таблице вопросов/ответов.Где ошибка в моей логике вложенных for-loops с ifs?
Если в этой таблице достаточно записей, можно начать викторину. Викторина проходит через записи в вопросе/таблице ответов, выбирает вопрос случайным образом и задает пользователю вопрос. Его ответ сохраняется в викторине.
Записи в таблице викторины учитывают текущего пользователя, поэтому, если уже есть запись для пользователя (возможно, он уже задан перед вопросом), тогда ответ обновляет запись в таблице викторины , Если пользователю задан вопрос до этого, создается новая запись в таблице викторины.
Большинство из них работает более или менее, но как-то записи в таблице викторины не обновляются, и я не понимаю, почему. Итак, где ошибка в моей логике здесь?
//Creates a list.The user answers the question via radiobuttons.
//All quiz-entries that match the question_ID get put into the list.
//Bob and Tim could have answere the same question,
//so the question_ID could be in there several times
List<Quiz> tempQuizList = Quiz.find.where().like("question_ID", clickedRadioAnswer.questionID).findList();
User currentUser = request().name();
if(tempQuizList.size() > 0){
// Go through all entries in the quiz-table
for (Quiz quizItem : Quiz.find.all()) {
// If the user from the quiz-table entry is the same as the current user
if((quizItem.userID).equals(currentUser.email)){
if(clickedRadioAnswer.answerID.equals(bestAnswer.answerID)){
// If user has answered correctly, update the entry with the user and an interval to postpone the time when the user has to answer the question again
Quiz.updateAnswer(clickedRadioAnswer.questionID, currentUser.email, 5000);
}
else{
Quiz.updateAnswer(clickedRadioAnswer.questionID, currentUser.email, 0);
}
}
if(!(quizItem.userID).equals(currentUser.email)){
if(clickedRadioAnswer.answerID.equals(bestAnswer.answerID)){
Quiz.createAnswer(clickedRadioAnswer, currentUser, 5000);
}
else{
Quiz.createAnswer(clickedRadioAnswer, currentUser, 0);
}
}
}
}
Знаете ли вы о программном обеспечении отладки? Это выглядит точно так же, как проблема, которую легче понять, пройдя ее шаг за шагом - как это делают отладчики. – blagae
Обновление использует 'currentUser.email' create uses' request(). Username() 'не уверен, что он такой же разработан. –
@blagae: Да, но поскольку я использую платформу воспроизведения, это немного сложнее, чем обычно. Чтобы узнать, что происходит в БД, я должен ввести 'активатор' ... затем' h2-browser'. Но для запуска отладчика я не могу использовать 'активатор', а затем' -jvm-debug 9999 run', так как он не распознает это как команду. Поэтому я запускаю сеанс отладки, не видя свою БД ... но в отладчике иногда зависает моя система, когда я нажимаю 'F6' или пытаюсь перейти в класс-файлы. Поэтому я в основном использую 'System.out.println (...)', чтобы посмотреть, что происходит, я отредактировал их из моего вопроса. – hamena314