2017-10-06 21 views
0

私には、曜日を尋ねるプログラムがあります。私は、ユーザーから与えられた答えをテストし、1日のスペルが間違っていたり、何か他のものを入力したりすると、別のチャンスを返そうとしています。私の等号あなたはそれを文字列の配列、およびループを使用することができ、その前にスキャナを無視したかに関係なく、私が入れ何の日while文をプリントアウトしないのいずれかである。Stringが大文字と小文字を区別しない他の複数の文字列と等しくないかどうかを確認する方法

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

注:1行を破棄して初めて小文字に変換する浮動 'scan.nextLine();がありますが、初めてループ内に置く必要があります。 –

答えて

0

あなたの入力はそれらのいずれかと一致するかどうかを確認

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; 
} 
3

効率的な方法は、HashSetのを使用することであるが、この方法では、チェックはあなたの問題は)(scan.nextLineを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()); 
} 
0

ダングリングされています。行を削除し、それが動作します。

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のソリューションはより良いアプローチです。

関連する問題