如果测验中的输入无效,如何让用户回答相同的问题

how to let the user answer same question if input is invalid in a quiz

我正在为我的学校项目制作问答游戏。如果输入无效,我无法让用户回答相同的问题。我想让用户在所有问题都没有有效输入的情况下回答同一个问题。

到目前为止,这是我的代码:

import java.util.Scanner;

public class MainClass {

    public static void main(String[]args) {
    
        String quest1 = ("Who founded the company spaceX?\na: Will Smith\nb: Elon Musk\nc: Kevin Hart");
        String quest2 = ("Which sport is the most famous in the world?\na: Football\nb: Basketball\nc: Tennis");
        
        questionsAndAnswers [] questionAnswers = {          
                new questionsAndAnswers(quest1, "b"),
                new questionsAndAnswers(quest2, "a")
        };
    
        doQuiz(questionAnswers);
    }

    public static void doQuiz(questionsAndAnswers[] questionAnswers) {
        
        int points = 0;
        
        Scanner input = new Scanner(System.in);
        
        boolean looper = true;
        
        while (looper) {
            
            for(int i = 0; i < questionAnswers.length; i++){
                System.out.println(questionAnswers[i].questions);
            
                String userAnswer = input.nextLine();
    
                if(!"a".equals(userAnswer) && !"b".equals(userAnswer) && !"c".equals(userAnswer)) {
                    
                    System.out.println("Invalid input, try again");
                    break;
                }
                
                else if(userAnswer.equals(questionAnswers[i].answers)) {            
                    points++;
                    System.out.println("Correct! Your points:" + points);
                }
                continue;
            }
            looper = false;
        }
    }   
}

到目前为止代码很棒。 当用户用无效答案回答问题时,您已经检测到这很好但是您想要做的是重新要求用户输入 因此,如果您跟踪用户输入的是否有效

boolean hasEnteredValidAnswer = false
while(!hasEnteredValidAnswer) {
    String userAnswer = input.nextLine();

    if("a".equals(userAnswer) || "b".equals(userAnswer) || "c".equals(userAnswer)) {
        hasEnteredValidAnswer = true                    
    }
    else {
        System.out.println("Invalid input, try again");
    }
}

使用 while 循环代替 for 循环:

        int i = 0;
        while (i < questionAnswers.length){
            System.out.println(questionAnswers[i].questions);
        
            String userAnswer = input.nextLine();

            if(userAnswer.equals(questionAnswers[i].answers)) {            
                points++;
                System.out.println("Correct! Your points:" + points);
                ++i;
            } else {
                System.out.println("Invalid input, try again");
                // do not increment i
            }
        }