如何检查String是否不等于多个其他字符串忽略大小写

时间:2017-10-06 02:51:28

标签: java string equals

我有一个程序要求用户提供一周中的某一天。我试图测试用户给出的答案,如果他们拼错一天或输入其他内容,则给他们另一个回答的机会。我的平等要么是忽略之前的扫描仪,要么打印出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();
    }

3 个答案:

答案 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的解决方案是一种更好的方法。