в то время как цикл внутри цикла, запутался? - PullRequest
0 голосов
/ 11 ноября 2019

Абсолютно новичок в программировании, и я занимался проектом, и я запутался в том, как я могу заставить его работать. Пожалуйста, помогите мне

        boolean answer1 = true; 
        for (int i=0;i<q.questionbank.length;++i)
       {   q.Question = input(q.questionbank[i]);

        while(answer1 == true)
       {

        if (q.Question.equals(a.correctans) || (q.Question.equals(a.impossibleans) || (q.Question.equals(a.wrongans))))
        {
            score = printquiz(answer,score,q.Question);
            answer1 = false;
        }
        else
        {
            print("Not a Valid Answer, please try again\n");
        }
    }
    }
    return score;

Здесь у меня есть класс, который называется Questionbank и викторина. Правильные / невозможные / неправильные являются частью типа данных викторины. тогда как вопрос q.question является частью банка вопросов. У меня есть вопрос о массиве в типе данных Questionbank. Я хочу использовать для цикла, чтобы пройти через вопросы, и если пользователь вводит правильный ответ, там оценка увеличивается. Это работает для первого вопроса, но не для второго вопроса. обычно, когда они отвечают правильно, у меня есть другой метод printquiz, в котором есть операторы принятия решения, чтобы сообщить пользователю, является ли его ответ правильным или неправильным, и назначить им очки. но он даже не идет к этому методу после первой итерации цикла. Я запутался в том, что происходит. Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 11 ноября 2019

Второй раз не работает, потому что вы устанавливаете answer1 на false и никогда не устанавливаете его снова на true. Таким образом, цикл while больше не вводится (= больше не имеет значения true) после строки кода answer1 = false в операторе if, достигнутой в первый раз.

Чтобы это исправить,попробуйте поместить answer1 = true внутри цикла for, перед циклом while.

...