如何重新要求用户输入yes或no?

41zrol4v  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(422)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

5个月前关门了。
改进这个问题
一个简单的文本游戏需要用户以yes或no格式输入。如果格式不正确,程序应该再次询问。我希望游戏使用不同的有趣的短语,而不是像“请输入是或否”无聊的。
我知道如何用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)];
    }
llmtgqce

llmtgqce1#

首先,让我们修复现有代码中的几个错误:
缺少else块,这意味着if块后面的行将始终执行;
不管输入是否 Y 或者 N ,您正在分配 answer == 'Y'; 把它还给我;
返回uncasted(类型不是推断的)类型,该类型应为 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)];
}

相关问题