首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在给出正确的输出之前,Java循环3次

在给出正确的输出之前,Java循环3次
EN

Stack Overflow用户
提问于 2018-05-02 21:38:46
回答 2查看 122关注 0票数 3

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

我的问题是,当你说“政治”或“天文学”时,它会再次要求你输入两次,然后才会给出"test“的期望输出。

代码如下:

代码语言:javascript
复制
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";
        }
    }
}

有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-05-02 21:42:24

不需要 getAnswer() 3次,只需getAnswer()到一个String变量,你就可以开始工作了。

如下所示:

代码语言:javascript
复制
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";
        }
    }
票数 7
EN

Stack Overflow用户

发布于 2018-05-02 21:57:13

如果你正在学习do-while,那么你只需要在do中提示即可。当前您正在调用getAnswer三次,这将强制重复提示。

以下是使用do-while解决此问题的快速方法

代码语言:javascript
复制
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循环...

代码语言:javascript
复制
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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50136060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档