Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java循环3次,然后给出正确的输出_Java_Loops - Fatal编程技术网

Java循环3次,然后给出正确的输出

Java循环3次,然后给出正确的输出,java,loops,Java,Loops,我正在申请一个政治或天文学方面的测验 我的问题是,当你说“政治”或“天文学”时,它会再问你两次你的输入,然后再给出所需的“测试”输出 代码如下: import java.util.Scanner; public class Main { public static void main(String[] args) { do { if (getAnswer().equalsIgnoreCase("neither")) {


我正在申请一个政治或天文学方面的测验

我的问题是,当你说“政治”或“天文学”时,它会再问你两次你的输入,然后再给出所需的“测试”输出

代码如下:

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";
        }
    }
}
有什么想法吗?

谢谢这里没有必要
getAnswer()
三次,只需将
getAnswer()
转换成
字符串
变量即可

像这样:

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";
        }
    }

如果您正在学习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();
}
publicstaticvoidmain(字符串[]args){
List validAnswers=Arrays.asList(“两者都不是”、“政治”、“天文学”);
字符串回答;
做{
回答=提示回答();
}而(!validAnswers.contains(答案));
系统输出打印(“测试”);
}
公共静态字符串promptForAnswer(){
println(“你想接受政治或天文学方面的测验吗?”);
返回新扫描仪(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();
}
publicstaticvoidmain(字符串[]args){
List validAnswers=Arrays.asList(“两者都不是”、“政治”、“天文学”);
而(!validAnswers.contains(promptForAnswer())){
System.out.println(“这不是有效的响应,请重试!”);
}
系统输出打印(“测试”);
}
公共静态字符串promptForAnswer(){
println(“你想接受政治或天文学方面的测验吗?”);
返回新扫描仪(System.in).next();
}

谢谢!顺便问一下,你知道这是否是学习Java的好播放列表吗: