2016-05-22 15 views
-1

私は完全にプログラミングに新しいです、そして、私が今まで知っているものをちょうど混乱させています。私は単純な質問をする種類の原始的な "AI"を作っています。コードのこの部分では、プログラムは「あなたはどこに住んでいますか?」と質問します。あなたはそこに住むのが好きですか?ユーザーがNoまたはYesのバリエーション以外のものを入力した場合、ボットは再度質問をするようにしています。ここに私がこれまで持っていたものがあります。非常にnoobyの質問入力とif文

 System.out.println("I have never been to " + line3 + " before. Do you like it there?"); 

    // Wait for user to enter a line of text 
    String line4 = input.nextLine(); 

    if(line4.equals("Yes")){ 
     System.out.println("That's good! I'm glad to hear it."); 
    } 
     else if(line4.equals("No")){ 

      System.out.println("Oh no! You should move then!"); 

     } 
     else if(line4.equals("no")){ 

      System.out.println("Oh no! You should move then!"); 

     } 
     else if(line4.equals("yes")){ 

      System.out.println("That's good! I'm glad to hear it."); 

     } 

どうすればいいですか?また、すでにコードに書いたことを達成するための簡単な方法はありますか?私は他のすべてのYes/Noのif文を作成しなければなりません。例えば、 "Yes"の場合は別のelseが必要です。または「まったくありません!」などなど、事前

+0

あなたのコードは完全ではありません。完全なコードを書いてください..... 'no'と' No'を区別するのではなく、大文字と小文字を区別することができます。 – piyushj

答えて

1

一つの選択肢で

多くのおかげで、無限ループ(およびequalsIgnoreCase)を使用します。次に、あなたが呼び出すよう

String line4 = input.nextLine(); 
while (true) { 
    if (line4.equalsIgnoreCase("yes")) { 
     System.out.println("That's good! I'm glad to hear it."); 
     break; 
    } else if (line4.equalsIgnoreCase("no")) { 
     System.out.println("Oh no! You should move then!"); 
     break; 
    } 
    line4 = input.nextLine(); 
} 

別のオプションは、

static boolean getYesOrNo(Scanner scanner, String msg) { 
    while (true) { 
     System.out.println(msg); 
     String v = scanner.nextLine(); 
     if (v.equalsIgnoreCase("yes")) { 
      return true; 
     } else if (v.equalsIgnoreCase("no")) { 
      return false; 
     } 
    } 
} 

のようなヘルパーメソッドへのプロンプトと入力を抽出Map<String, String>

Map<String, String> msgMap = new HashMap<>(); 
msgMap.put("yes", "That's good! I'm glad to hear it."); 
msgMap.put("no", "Oh no! You should move then!"); 
// ... 
String line4; 
do { 
    line4 = input.nextLine().toLowerCase(); 
    if (msgMap.containsKey(line4)) { 
     System.out.println(msgMap.get(line4)); 
    } 
} while (!msgMap.containsKey(line4)); 

のようなループし、別のオプションを使用しますそれは好きです

if (getYesOrNo(input, "Do you like living there?")) { 
    System.out.println("That's good! I'm glad to hear it."); 
} else { 
    System.out.println("Oh no! You should move then!"); 
} 
0

あなたは別のメソッドに関数を尋ねる移動し、(エリオット・フリッシュの答えとそれをかcobine)再帰でそれを使用することができます。

public static boolean askUser(String question) { 
    System.out.println(question); 
    String answer = input.nextLine(); 
    if ("yes".equalsIgnoreCase(answer)) { 
     return true; 
    } else if ("no".equalsIgnoreCase(answer)) { 
     return false; 
    } else { 
     return askUser(question); 
    } 
} 

をだから今、あなたがこの方法でそれを使用することができます。

String prevLine = "Boston"; 
    String question = "I have never been to " + prevLine + " before. Do you like it there?"; 
    boolean answer = askUser(question); 
    if (answer) { 
     System.out.println("That's good! I'm glad to hear it."); 
    } else { 
     System.out.println("Oh no! You should move then!"); 
    } 

もう一度マップにラップしてください

関連する問題