使用while循环验证字符串输入

时间:2017-07-27 15:40:42

标签: java loops while-loop

我使用这个简单的代码非常艰难。我的while条件总是被忽略,并且执行print语句。请帮忙。

package Checkpoints;
import java.util.Scanner;


public class Check05 {
    public static void main (String[]args){

        Scanner keyboard = new Scanner(System.in);

        /**
         * Write an input validation that asks the user to enter 'Y', 'y', 'N', or 'n'.
         */


        String input, Y = null, N = null;

        System.out.println("Please enter the letter 'Y' or 'N'.");
        input = keyboard.nextLine();


        while (!input.equalsIgnoreCase(Y) || !(input.equals(N)))
                //|| input !=y || input !=N ||input !=n)

            {
            System.out.println("This isn't a valid entry. Please enter the letters Y or N" );
            input = keyboard.nextLine();
            }

    }

}

3 个答案:

答案 0 :(得分:1)

改变这一点;

String input, Y = null, N = null;

到此;

String input, Y = "Y", N = "N";

这样您就可以将用户输入字符串与" Y"进行比较和" N"字符串。

而且这个;

while (!input.equalsIgnoreCase(Y) || !(input.equals(N)))

到此;

while (!(input.equalsIgnoreCase(Y) || input.equalsIgnoreCase(N)))

因为@talex警告你的病情设计是错误的。

答案 1 :(得分:0)

您要将输入与null进行比较,因为您忘记定义字符串YN的值。

您可以在常量中定义答案值,如下所示:

public static final String YES = "y";
public static final String NO  = "n";

public static void main (String[] args) {
    Scanner keyboard;
    String  input;

    keyboard = new Scanner(System.in);

    System.out.println("Please enter the letter 'Y' or 'N'.");
    input = keyboard.nextLine();

    while (!(input.equalsIgnoreCase(YES) || input.equalsIgnoreCase(NO))) {
        System.out.println("This isn't a valid entry. Please enter the letters Y or N" );
        input = keyboard.nextLine();
    }
}

编辑:根据talex

的建议更正了while条件

答案 2 :(得分:0)

在"之前添加这些额外条件。循环以避免这个

    if(Y!= null && !Y.isEmpty()) 
    if(N!= null && !N.isEmpty())