1. ホーム
  2. java

[解決済み] Java - ループあり/なし

2022-02-06 19:10:29

質問

System.out.println("\nWould you like to order some coffee, " + customerName + "? (y/n)");

char response = keyboard.next().charAt(0);
while (response != 'y' && response != 'n') {
  System.out.println("\nInvalid response. Try again.");
  response = keyboard.next().charAt(0);
} if (response == 'n') {
  System.out.println("\nCome back next time, " + customerName + ".");
} else if (response == 'y') {
  System.out.println("\nGreat! Let's get started.");

このプログラムを実行し、どの入力が動作するかを確認すると、「y」や「n」で始まる単語を入力しても、エラーメッセージが出力されず、プログラムの続きに移ることがわかります。また、'Y'や'N'を入力しても、無効な応答として登録されてしまいます。

解決方法は?

あなたのコードは、入力の最初の文字しかチェックしません。 y または n は有効であるとみなされます。文字列全体を比較することもできます。

String response = keyboard.next();
while (!response.equalsIgnoreCase("y") && !response.equalsIgnoreCase("n")) {
  System.out.println("\nInvalid response. Try again.");
  response = keyboard.next();
} 
if (response.equalsIgnoreCase("n")) {
  System.out.println("\nCome back next time, " + customerName + ".");
} else {
  System.out.println("\nGreat! Let's get started.");
}