我正在申请一份政治或天文学方面的测验。
我的问题是,当你说“政治”或“天文学”时,它会再次要求你输入两次,然后才会给出"test“的期望输出。
代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
do {
if (getAnswer().equalsIgnoreCase("neither")) {
System.out.println("Please enter \'astronomy\' or \'politics\'.");
}
getAnswer();
}
while(getAnswer().equalsIgnoreCase("neither"));
System.out.println("test");
}
public static String getAnswer() {
Scanner quizType = new Scanner(System.in);
System.out.println("Would you like to be quizzed on politics or astronomy?");
String typeAnswer = quizType.next();
if (typeAnswer.equalsIgnoreCase("politics")) {
return "politics";
}
else if (typeAnswer.equalsIgnoreCase("astronomy")) {
return "astronomy";
}
else {
return "neither";
}
}
}有什么想法吗?
谢谢
发布于 2018-05-02 21:42:24
不需要 getAnswer() 3次,只需getAnswer()到一个String变量,你就可以开始工作了。
如下所示:
public static void main(String[] args) {
String answer = "";
do {
answer = getAnswer();
if (answer.equalsIgnoreCase("neither")) {
System.out.println("Please enter \'astronomy\' or \'politics\'.");
}
} while (answer.equalsIgnoreCase("neither"));
System.out.println("test");
}
public static String getAnswer() {
Scanner quizType = new Scanner(System.in);
System.out.println("Would you like to be quizzed on politics or astronomy?");
String typeAnswer = quizType.next();
if (typeAnswer.equalsIgnoreCase("politics")) {
return "politics";
} else if (typeAnswer.equalsIgnoreCase("astronomy")) {
return "astronomy";
} else {
return "neither";
}
}发布于 2018-05-02 21:57:13
如果你正在学习do-while,那么你只需要在do中提示即可。当前您正在调用getAnswer三次,这将强制重复提示。
以下是使用do-while解决此问题的快速方法
public static void main(String[] args) {
List<String> validAnswers = Arrays.asList("neither","politics","astronomy");
String answer;
do {
answer = promptForAnswer();
} while(!validAnswers.contains(answer));
System.out.println("test");
}
public static String promptForAnswer() {
System.out.println("Would you like to be quizzed on politics or astronomy?");
return new Scanner(System.in).next();
}或者你可以使用while循环...
public static void main(String[] args) {
List<String> validAnswers = Arrays.asList("neither","politics","astronomy");
while(!validAnswers.contains(promptForAnswer())) {
System.out.println("That was not a valid response, try again!");
}
System.out.println("test");
}
public static String promptForAnswer() {
System.out.println("Would you like to be quizzed on politics or astronomy?");
return new Scanner(System.in).next();
}https://stackoverflow.com/questions/50136060
复制相似问题