【问题标题】:How to re-ask the user to enter Yes or No? [closed]如何重新要求用户输入是或否? [关闭]
【发布时间】:2020-08-22 19:26:53
【问题描述】:

一个简单的文本游戏需要用户以“是”或“否”格式输入。 如果格式不正确,程序应该再次询问。 我希望游戏使用不同的有趣短语,而不是像“请输入是或否”这样无聊的短语。

我知道如何用 Java 编写代码,但英语不是我的母语,我发现很难想出这样的短语。如果你能帮我想出这些英语短语,我会很高兴。可能是我可以找到此类短语的一些想法。

    private boolean askYesNo() {
        while (true) {
            final var answer = scanner.nextLine().toUpperCase().charAt(0);
            if (answer == 'Y' || answer == 'N') {
                return answer == 'Y';
            }
            System.out.println(pickMessage(new String[]{
                    "Come on, yes or no?",
                    "Please enter yes or no."
            }));
        }
    }

    private String pickMessage(final String[] messages) {
        return messages[random.nextInt(messages.length)];
    }

【问题讨论】:

  • “是或否”、“输入 Y 继续”、“不是?”
  • 我不认为 Stackoverflow 适合这样的问题。
  • 请阅读what questions should you ask on Stack Overflow。这是一个针对编程主题而不是针对英语短语的 QA 网站。如果您真的在寻找英语短语,我不会回答。但是,我这样做了,因为您在那里遇到了编程问题,我认为我可以在这方面提供帮助。

标签: java user-interface text


【解决方案1】:

首先,让我们修复现有代码中的几个错误:

  1. 您缺少 else 块,这意味着 if 块之后的行将始终执行;
  2. 不管输入是Y 还是N,您都在分配answer == 'Y'; 并返回它;
  3. 返回未强制类型转换(类型未推断),预期为 Character(因此,您应该强制类型转换),但您的方法声明返回完全不同的类型 - boolean

现在让我们从数组中随机选择一个字符串元素,同时修复现有问题:

private Character askYesNo() {
    while (true) {
        final char answer = scanner.nextLine().toUpperCase().charAt(0);
        if (answer == 'Y' || answer == 'N') {
            return answer;
        } else {
            pickMessage(messages); //assuming that you have a messages variable
        };
    }
}

private String pickMessage(final String[] messages) {
    Random random = new Random();
    return messages[random.nextInt(messages.length)];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多