我需要编码为不同的输出返回两个不同的错误消息。 一个用户输入为空白,另一个用户输入不是y或n。我正在运行我的代码问题,只返回非y或n的错误消息,因为如果用户输入除y或n以外的任何内容,我会返回该消息。代码将为空白错误返回正确的错误消息,但之后只会返回错误消息,而不是y或n。关于如何解决这个问题的任何建议?
while (choice.isEmpty())
{
System.out.println("Error! This entery is required. Try again.");
choice = sc.nextLine();
}
while (!(choice.equalsIgnoreCase ("y") || choice.equalsIgnoreCase ("n")))
{
System.out.println ("Error! Please enter y, Y, n, or N. Try again ");
choice = sc.nextLine();
}
答案 0 :(得分:3)
你可能最好用一个循环:
while (!choice.equalsIgnoreCase("y") && !choice.equalsIgnoreCase("n")) {
if (choice.isEmpty()) {
System.out.println("Error! This entry is required. Try again.");
} else {
System.out.println("Error! Please enter y, Y, n, or N. Try again.");
}
choice = sc.nextLine();
}
答案 1 :(得分:1)
我认为你只需要一个循环:
String choice = "";
do {
choice = sc.nextLine();
if (choice.equalsIgnoreCase("y") || choice.equalsIgnoreCase("n")) {
break;
}
else {
System.out.println ("Error! Please enter y, Y, n, or N. Try again ");
}
} while (true);
请注意,此方法可正确处理所有输入,包括先前尚未定义输入的第一个输入。
答案 2 :(得分:0)
您没有描述您想要实现的目标,如果它是无限循环(只要sc.nextLine()
返回某些内容),用户只能输入'y'或'n “:
while((choice = sc.nextLine()) != null) {
if(choice.isEmpty()) {
System.out.println("Error! This entry is required. Try again.");
} else if(!choice.equalsIgnoreCase("y") && !choice.equalsIgnoreCase("n")) {
System.out.println("Error! Please enter y, Y, n, or N. Try again.");
} else {
// do whatever you need
}
}