2017-05-21 2 views
2

私は、このJavaコードがあります。どのようにこのコードのwhileループを行うのですか?

public class Ages { 
public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 

    int value = 0; 
    String name; 
    int age; 



     System.out.print("Hey, what's your name? "); 
     name = keyboard.next(); 
     System.out.println(); 

     System.out.print("Ok, " + name + ", how old are you? "); 
     age = keyboard.nextInt(); 
     System.out.println(); 

      do{ 
      if(age < 16){ 
      System.out.println("You can't visit in the museum, " + name + "."); 

      if(age < 18); 
       System.out.println("You can't visit in the park, " + name + "."); 
      } 
      if (age < 25){ 
       System.out.println("You can't visit if you have a car, " + name + "."); 
      } 
      if (age >= 25){ 
       System.out.println("You can do anything, " + 
        name + "."); 

      } 
      while(age > 300); 
      System.out.println("It's not correct..Try Again, " + name + 
      "."); 


      } 
} 

を、私は、ユーザーが間違った答えを書くことを必要とする、彼は「?あなたは何歳」、と彼は別の試行を取得した後、再度質問を取得します。.. 何私はgoona do? 助けてくれてありがとう! :)

+1

'do {} while()'ループ内で入力を取る部分を配置します。 –

答えて

3

一つながら、ブロックは、あなたが使用する必要が修正されていません。

System.out.println("It's not correct..Try Again, " + name + "."); 

do { 
    if (age < 16) { 
     System.out.println("You can't visit in the museum, " + name + "."); 

     if (age < 18); 
     System.out.println("You can't visit in the park, " + name + "."); 
    } 
    if (age < 25) { 
     System.out.println("You can't visit if you have a car, " + name + "."); 
    } 
    if (age >= 25) { 
     System.out.println("You can do anything, " 
       + name + "."); 

    } 
    //while(age > 300);<<----------wrong position 

    System.out.println("It's not correct..Try Again, " + name + "."); 

} while (age > 300);//<<----------correct position 

while条件の継ぎ目ではない正しいあなたが使用できるように、あなたは、だけではなく、最大の、最小値と最大年齢に確認する必要があります。

while (age < minAge || age > maxAge); 

もしそうなら年齢は最小値よりも小さく、次に最大繰り返し数が大きい。

3つのこのi F今までに実行されません。

if (age < 18);//<<----------------note the ; it mean your if is end 
    System.out.println("You can't visit in the park, " + name + "."); 

代わりに、あなたのループ内の年齢を読むことができます:

System.out.print("Hey, what's your name? "); 
name = keyboard.next(); 
System.out.println(); 

do { 

    System.out.print("Ok, " + name + ", how old are you? "); 
    age = keyboard.nextInt(); 
    System.out.println(); 
    .... 
}while(..); 

・ホープ、この缶はあなたの問題についてのアイデアを提供します。

+0

第3ポイントの良いキャッチ。私はそれを見ていない:) – davidxxx

+1

':それはちょうど@davidxxxハハもあなたが答えることが起こるクリア: –

+0

ありがとう!今それは私のために働く:) – ein

3

1) if (age >= 25){の代わりにif (age >= 25 && age <= 300){の条件を使用する必要があります。

そうでない状態がageが300を超えていると、あなたがしたくない場合でも、trueです:値が正しくない場合にも、ユーザーが新しい入力を入力できるようにする必要があり

while(age > 300); 

2)。

age = keyboard.nextInt();がループ内にある必要があります。

3)ループを終了させる必要があります。 while文で
は、ユーザーからの新しい入力を必要とする状態を指定することができます。

while (age > 300) 

これは、コードを示します(テストしていません):

int age; 
    do{ 
    age = keyboard.nextInt(); 

    if(age < 16){ 
     System.out.println("You can't visit in the museum, " + name + "."); 
    } 
    else if(age < 18){ 
     System.out.println("You can't visit in the park, " + name + "."); 
    } 
    else if (age < 25){ 
     System.out.println("You can't visit if you have a car, " + name + "."); 
    } 

    if (age >= 25 && age <= 300){ 
     System.out.println("You can do anything, " + 
      name + ".");     
    } 
    else{ 
     System.out.println("It's not correct..Try Again, " + name + "."); 
    } 
    }     
    while (age > 300); 
+0

答えがありがたいですが、ユーザーが年齢を書いていない場合は、年齢を書き直してもう一度答えを出してみる必要があります。なぜそれが得られないのですか? – ein

+0

@einもう一度やり直す方法を説明するために更新しました。 – davidxxx

+0

ありがとう!今、それは私のために働く:) – ein

1

は、これをしてくださいしてみてください。

public class Ages { 
    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 

     int value = 0; 
     int age; 

     System.out.print("Hey, what's your name? "); 
     String name = keyboard.next(); 
     System.out.println(); 

     while(true) { 
      System.out.print("Ok, " + name + ", how old are you? "); 
      age = keyboard.nextInt(); 
      System.out.println(); 
      if (age <= 300) { 
       break; 
      } 
      System.out.println("It's not correct..Try Again, " + name + 
      "."); 
     } 

     if(age < 16) { 
      System.out.println("You can't visit in the museum, " + name + "."); 
     } 
     if(age < 18){ 
      System.out.println("You can't visit in the park, " + name + "."); 
     } 
     if (age < 25){ 
      System.out.println("You can't visit if you have a car, " + name + "."); 
     } 
     if (age >= 25){ 
      System.out.println("You can do anything, " + 
       name + "."); 

     } 
    } 
} 
+0

非常に:)歓迎されているが、出力は次のとおりです。?「ねえ、あなたの名前は何でしょうBOBO [OK]を、BOBO、あなたは何歳300 あなたは何を行うことができ、?ボボ "ユーザーが正しい答えを書いていない場合、もう一度やり直すべきです:「あなたは何歳ですか?」私は何をすべきですか? – ein

+0

これは私の提案したコードを実行する結果として得られます: 'ねえ、あなたの名前は何ですか?アンドリュー オクラ、アンドリュー、何歳ですか? 302 これは正しくありません。もう一度やり直してください。 オクラ、アンドリュー、何歳ですか? 301 これは正しくありません。もう一度やり直してください。 オクラ、アンドリュー、何歳ですか? 300 あなたは何でもできます、アンドリュー。あなたが探していたものではありませんか? –

+0

はい!これは私が..あなたは、私が – ein

関連する問題