2017-09-28 9 views
2
String lottoNumbers = ""; 
     Scanner scan = new Scanner(System.in); 
     System.out.println("To buy a ticket we need your numbers..."); 


     for (int i = 1; i <= 6; i++) 
     { 
      System.out.println("Please enter number " + i); 
      int userNum = scan.nextInt(); 

      if (userNum >= 1 && userNum <= 49) 
      { 
       lottoNumbers = lottoNumbers + userNum; 
       if (i < 6) lottoNumbers = lottoNumbers + ", "; 
      } 

      else 
       do { 
        System.out.println("Numbers must be between 1 and 49. \nPlease try again."); 
        userNum = scan.nextInt(); 
        } 
       while (userNum <1 || userNum >49); 
     } 

     System.out.println("You selected numbers " + lottoNumbers); 
     System.out.println("Ticket has been printed, please pay £2."); 

この目的は、for、do、do whileループを練習することです。ユーザーが1から49までの6つの数字を入力するこのdo whileループを作成する必要があります。入力した範囲がこの範囲外の場合は、入力が1~49になるまで入力する必要があります。ループの結果を連結する

すべての入力6 1以内 - 初めて49、出力が、正しくすなわち「あなたの番号は1、2、3、4、5、6」

しかし、彼らは台無し第四エントリを言うならば、出力は欠場するこれをconcatonatedされます。 Ie「あなたの番号は1,2,3,5,6です。」

ここで私が間違っているとは思っていません。私たちは長い間Javaを開始しておらず、私はこの段階で使用できるソリューションの種類が限られていることに注意してください。

私は従わなければならなかった擬似コードは次のとおりです。あなたの他のセクションでまあ

1.1. Declare a String variable to hold the output 
1.2. Declare scanner variable 
1.3. Print “To buy a ticket we need your numbers…” 
1.4. Loop 6 times 
1.4.1. Print “Please enter lotto number x” 
1.4.2. Declare variable to hold users num 
1.4.3. Store users num 
1.4.4. If number is between 1 and 49 then 
1.4.4.1.1. concatenate the users number plus a comma to the output 
1.4.5. Else 
1.4.5.1.1. Do Loop 
1.4.5.1.1.1. Print “numbers must be between 1 and 49 please try again” 
1.4.5.1.1.2. Store users num 
1.4.5.1.2. Loop While users num < 0 or users num> 49 
1.4.6. End If 
1.5. End Loop 
1.6. Print “You selected numbers “ + output 
1.7. Print “Ticket has been printed – please pay £2” 
+0

forループが6回だけ実行されるためではありませんか? – procrastinator

答えて

0

ユーザがメインループの範囲外の番号を入力すると、キャッチアップのループdo { } while ()は入力を処理しません。それは妥当性を確認しますが、それはどこでも使用しません。

あなたがしなければならないことは、ユーザーがキャッチアップループで自分自身を修正した後で、文字列に値を追加することです。

if (userNum >= 1 && userNum <= 49) { 
    lottoNumbers = lottoNumbers + userNum; 
    if (i < 6) lottoNumbers = lottoNumbers + ", "; 
} else { 
    do { 
     System.out.println("Numbers must be between 1 and 49. \nPlease try again."); 
     userNum = scan.nextInt(); 
    } while (userNum < 1 || userNum > 49); 
    // Process valid input here 
    lottoNumbers = lottoNumbers + userNum; 
    if (i < 6) lottoNumbers = lottoNumbers + ", "; 
} // Note the extra brackets around else block 
+0

ありがとうございます。私は訂正された入力を扱うことについてすべて忘れていました。 – Stephen

+0

質問に回答したことを確認してください! –

1

、新しい番号を入力するようユーザーに尋ねると、あなたはこれを保存していますが/追加するには、それを連結していません。あなたのストリングlottoNumber。

また、私はあなたが間違って余分な数字を追加しないように、elseループからこれを追加する場所に注意しています。

+0

ありがとうございました!皆さんはいつものように素晴らしいです – Stephen

関連する問題