我使用这个简单的代码非常艰难。我的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();
}
}
}
答案 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
进行比较,因为您忘记定义字符串Y
和N
的值。
您可以在常量中定义答案值,如下所示:
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())