[英]How to check whether String is not equal to multiple other Strings ignoring case
我有一個程序正在詢問用戶一周中的某一天。 我正在嘗試測試用戶給出的答案,並給他們另一個機會,如果他們拼錯一天或輸入其他內容,就可以回答。 我的等於是要么忽略掃描儀,要么不管我輸入哪一天都打印出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();
}
一種有效的方法是使用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());
}
您可以使用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;
}
您的問題是懸在scan.nextLine()上。 刪除該行,它將起作用。
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();
}
PS:您的方法並不是最好的方法。 @Peter Lawrey的解決方案是更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.