2017-03-29 10 views
1

私のコードは正しく動作しますが、ユーザーが "青"を正しく推測すると、 "あなたは正しい色を持っています!"というメッセージが表示されます。その後、コードを終了する必要があります。しかし、それは別のk.next();ライン。どうすればこれを防ぐことができますか? 理解できない場合は、ここにコードがあります。Javaの終了ステートメント

import java.util.Scanner; 
 

 
public class BEassignment11 
 
{ 
 
    public static void main (String [] args) 
 
    { 
 
    Scanner k = new Scanner (System.in); 
 
    String color; 
 
    String again; 
 
    
 
    do 
 
    { 
 
     
 
     System.out.println ("Try to guess my favorite color!"); 
 
     color = k.next(); 
 
     
 
     if (color.equalsIgnoreCase ("blue")) 
 
     {  
 
     System.out.println ("You got the right color!"); 
 
     
 
     } 
 
     
 
     else 
 
     
 
     System.out.println ("That is not the right color. Would you like to try again? Yes/No"); 
 
     again = k.next(); 
 
    } 
 
    while (again.equalsIgnoreCase ("yes")); 
 
    
 
    } 
 
}

+0

if-elseの '{}'と一貫性を保つようにループを中断します。 – Ramanlfc

+1

[Do While Loop Java Javaを破棄しますか?](http://stackoverflow.com/questions/7370174/)の可能な複製break-do-while-loop-java) – Satpal

答えて

0

あなたは、このような "破る" 文でループから抜け出すことができます:あなたはdo..whileループでif文の中System.out.println ("You got the right color!");breakを使用することができます

if (color.equalsIgnoreCase ("blue")){  
    System.out.println ("You got the right color!"); 
    break; 
} 
+1

ありがとうございました!完璧に働いた。 –

0

それともdo..whileループの前に変数を定義し、例えばvar boolFlag = falseセット変数trueif内の文boolFlag = trueには、|| boolFlag === truewhile内の条件が含まれます。

0

System.out.println....は、else節の一部です。

again = k.next(); 

は、ユーザーが正しい色を取得してもまだ実行されることに驚くようです。私は、あなたが以下に他のコードを変更するお勧め:自動的にユーザーが正しく推測した場合、再び実行しないプログラムを教えてくれるだけで、彼らは間違って答えた場合に再試行するために、ユーザーの答えを読み込みます

if (color.equalsIgnoreCase ("blue")) 
     {  
     System.out.println ("You got the right color!"); 
     again = "No"; 
     } 
    else 
    { 
     System.out.println ("That is not the right color. Would you like to try again? Yes/No"); 
     again = k.next(); 
    }