我有一个程序要求用户提供一周中的某一天。我试图测试用户给出的答案,如果他们拼错一天或输入其他内容,则给他们另一个回答的机会。我的平等要么是忽略之前的扫描仪,要么打印出while语句,无论我放入哪一天。
System.out.println("Great! Welcome back " + cust.getName() + ". What day of the week would you like "
+ "to book?(Sunday, November the 12th thru Saturday, November the 18th");
String day = scan.nextLine();
String dayLower = day.toLowerCase();
scan.nextLine();
while (!"monday".equals(dayLower) && !dayLower.equals("tuesday") && !dayLower.equals("wednesday")
&& !dayLower.equals("thursday") && !dayLower.equals("friday") && !dayLower.equals("saturday")
&& !dayLower.equals("sunday")) {
System.out.println("Error in entry. Please enter a day of the week.");
day = scan.nextLine();
}
答案 0 :(得分:3)
一种有效的方法是使用HashSet,这种检查方式为O(1)
static final Set<String> days = new HashSet<>(Arrays.asList(
"monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"));
public boolean isDay(String input) {
return days.contains(input.toLowerCase());
}
答案 1 :(得分:0)
你可以使用一个String数组,然后循环检查你的输入是否匹配任何一个
public static boolean isDay(String input) {
String days[] = {
"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
};
for(String day : days) {
if(input.equalsIgnoreCase(day))
return true;
}
return false;
}
答案 2 :(得分:0)
你的问题是悬空scan.nextLine()。删除该行,它将工作。
140.08 = 140.1
141.63 = 141.7
PS:你的方法不是最好的方法。 @Peter Lawrey的解决方案是一种更好的方法。