如果测验中的输入无效,如何让用户回答相同的问题
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
}
}
我正在为我的学校项目制作问答游戏。如果输入无效,我无法让用户回答相同的问题。我想让用户在所有问题都没有有效输入的情况下回答同一个问题。
到目前为止,这是我的代码:
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
}
}