簡體   English   中英

如何檢查字符串是否不等於多個其他字符串而忽略大小寫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM