0

これが私がこれまでに持っているものです。配列の数値を入力する無限ループに陥りますが、数値が続く限り、適切に循環し続けます

static void ticketNumberArray(){

    int number = 1;             //which of the six numbers you need from the ticket
    int ticketCount = 1;            //which ticket (out of 20) you are currently on

    while(ticketCount<21){      //sentinel controlled while loop, will continue until the twentieth ticket is entered

         System.out.println("Please type number " +number+ " of ticket number " +ticketCount+ ".");     //asks for the numbers of the ticket your currently on
         Scanner keyboard = new Scanner(System.in);             //initiates a scanner variable
         int ticketNumber = keyboard.nextInt();             //assigns user input to the double variable ticketNumber and initializes as a double

         tickets[ticketCount-1][number-1]=ticketNumber;     //assigns user input into a 2-d array

         number++;                                      //Sentinel variable

         if(number==7){                                     //loop that controls the ticket count, every 6 numbers ='s one ticket
          ticketCount++;
          number=1;
         }
     }
}
4

4 に答える 4

1

これは些細なことですが、将来の参考のために、 ticketNumber を割り当てると int になりますが、コメントは double と言います。おそらく int を意味しますが、それらを混同すると問題が発生する可能性があります。

于 2012-04-23T01:32:37.837 に答える
1

無限ではありません。20 * 6 = 120 times入力ユーザーがループを終了する必要があるだけです...

于 2012-04-23T01:55:21.420 に答える
0

コードを見ると、なぜ無限ループになってしまうのかわかりません。私がすることは、number の値をトレースして、それが 7 のケースにジャンプしないかどうかを確認することです。
また、良い習慣として、その等式 (==) を上司または等号 (>=) に変更した方が良いと思います。将来インクリメントステップを変更することになり、条件を更新するのを忘れてしまい、無限ループに陥る可能性があります:)
最後に、関連のない発言として、通常はリテラル定数 (7 など) を使用しない方が良いです。宣言された定数を使用することを好みます。これは、コードの理解と更新の両方に最適です。

于 2012-04-23T01:54:59.810 に答える
0

ticketNumberArray()メソッドを次のように書き換えることを検討してください。

static void ticketNumberArray()
{
   for (int ticketCount = 1; ticketCount <= 20; ticketCount++)
   {
      for (int numberCount = 1; numberCount <= 6; numberCount++)
      {
         System.out.println("Please enter a number for ticket number " + ticketCount + ".");

         Scanner keyboard = new Scanner(System.in);

         int number = keyboard.nextInt();

         tickets[ticketCount - 1][numberCount - 1] = number;
      }
   }
}

この方法で意図がより明確になり、ループが実際に終了することがより明確になります。

于 2012-04-23T02:02:22.697 に答える