2012-04-23 13 views
0

これまで私が持っていたことは次のとおりです。あなたが割り当てたとき、私はで終わると配列の番号を入力するの無限ループは、しかし、それは限り数字はこれはマイナーなものであるループが壊れているのはなぜですか? 2d array of [20] [6]

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

このコードで何をしようとしていますか?私はあなたのループが "無限"だとは思わない、それはちょうど終わるのに長い時間がかかる。 – Bernard

+0

2d配列をユーザー生成番号で埋めようとしていますので、2次元配列を通常の配列と比較し、一致するものがあるかどうかを確認して勝者にします。私は停止する前に、1〜20回、5回、サイクルを巡って行きました*編集*今度は2回サイクルして終了します... wth – BBradshaw1

+0

'ticketCount'は最終的に' 21'の値に達し、 'number'は最終的に' 7'の値に達し、 'ticketCount'をインクリメントします。内部ループを使用するようにループを再設計することができます。 – Bernard

答えて

1

を行くように、適切サイクルに続くが、ちょうど将来の参考のためにticketNumberはintですが、あなたのコメントはdoubleと表示されます。おそらくintを意味しますが、それらを混ぜると問題が発生する可能性があります。

+0

元々、私は宝くじの数字に小数点以下の桁がないことを認識するまで、二重を使用していました。<。<...私は宝くじをしません。 – BBradshaw1

+0

よろしいですか。変数を使用するたびにスイッチのアカウントとなる変数タイプを切り替えるときには注意が必要です。 – Sams

+0

ローガー、私はいつも、私はそれらを見るとすぐに赤い波打ち線を攻撃する! – BBradshaw1

0

コードを見ると、なぜそれが無限ループに終わるのかわかりません。私がすることは、数値の値をトレースし、それが7つの場合を飛び越さないかどうかを調べることです。
また、良い習慣として、平等(==)を上級または同等(> =)に変更する方が良いと思います。将来的に増分ステップを変更して、無限ループに終わる状態を更新することを忘れてしまうかもしれません:)
最後に、関連していない1つの注意点として、通常はリテラル定数(7など)宣言された定数の使用を好むことができます。これは、コードの理解と更新の両方に最適です。

1

それはそれだけでループを終了するには、入力されたユーザのための20 * 6 = 120 timesを必要とし、無限ではありません...

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; 
     } 
    } 
} 

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

+0

2番目のループは7に等しくなくてはなりません6 – Crazenezz

+0

質問タイトルには次元[20] [6]の配列が記述されています。コードには "チケットから必要な6つの数字のうちのどれが必要ですか"彼は7つではなく6つの数字を使いたい。 – Bernard

+0

ああ、私の悪いこと、 'number ++ 'が最初です – Crazenezz

関連する問題