使用while循环验证

时间:2017-10-26 15:10:04

标签: java validation loops while-loop

大家好我只需要快速解决如何对此问题进行验证的问题。不幸的是,我正在使用的这本书似乎并没有在尝试该程序后提供解决方案。这是问题所在。

“写一个输入验证程序,要求用户输入'Y','y''N'或'n'”

请记住,必须使用while循环才能完成任何帮助。

while(answer != "y" || answer!= "n" )
    {
        System.out.println("Please use a  Y or N");
            answer = keyboard.nextLine();
    }

这是我当前的循环,但即使我在其中输入y或n,它似乎也不起作用。

我不断得到的当前输出是“请使用Y或N”,无论我输入正确的字母

1 个答案:

答案 0 :(得分:1)

这几乎需要一个do-while循环:

do {
    answer = keyboard.nextLine();
    System.out.println("Please use a  Y or N");
} while(!answer.equals("y") && !answer.equals("n"))

除了一个问题,无论如何都会显示警告。使用while,有两个选项:

answer = keyboard.nextLine();
while(!answer.equals("y") && !answer.equals("n")) {
    System.out.println("Please use a  Y or N");
    answer = keyboard.nextLine();
} 

或者,“无限循环与休息”的方法,可以节省你的两面性,但引入了“goto”:

while(true) {
    answer = keyboard.nextLine();
    if (answer.equals("y") || answer.equals("n")) {
        break;
    }
    System.out.println("Please use a  Y or N");
} 

使用==进行比较是一场灾难 - 永远不要将其与String一起使用,始终使用equals。否则,您将比较参考而不是值。

我几乎忘记了大写字母:您可以将equals替换为equalsIgnoreCase,如评论中所述。但是,如果因为愚蠢的要求而无法使用,那么只需与"Y""N"进行比较。