2012-04-23 83 views
0

這是我到目前爲止。我在結束了和但是輸入號碼爲陣,無盡的循環,它不斷循環正常,至於數去爲什麼我的循環被破壞?二維數組[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 2012-04-23 01:32:20

+0

我試圖與用戶生成的數字,所以我可以在二維數組比較有規律的排列和檢查,看看是否有任何比賽,使得比賽分出勝負,填補了二維數組。這肯定是無止境的,我整個週期,1到20去了,之前5次我停了下來。*編輯*現在循環兩次,然後終止......問心無愧 – BBradshaw1 2012-04-23 01:35:47

+0

'ticketCount'最終應達到的'21'值和終止因爲'number'最終會達到'7'的值,從而增加'ticketCount'。您可能需要重新設計您的循環以使用內部循環。 – Bernard 2012-04-23 01:44:44

回答

1

這東西不起眼,但是隻是以供將來參考,當您分配ticketNumber是一個int,但是你的評論說是雙倍的。你可能是指int,但是如果你把它們混合起來,可能會導致問題。

+0

最初我使用的是雙倍數據,直到我意識到彩票數字沒有小數.... <。<...我不玩彩票btw – BBradshaw1 2012-04-23 01:34:30

+0

好的。在切換使用變量的任何位置時,切換變量類型時要小心。 – Sams 2012-04-23 01:36:07

+0

羅傑說,我通常是,我一看到他們就會攻擊紅色的波浪線! – BBradshaw1 2012-04-23 01:47:45

0

看代碼,我不明白爲什麼它最終成爲一個無限循環。我會做的是追蹤數字的值,看看它是否不跳七案。
此外,作爲一個良好的習慣,我認爲這是更好地改變等於(==)到大於或等於(> =)。你最後可能會改變未來的增量步忘記更新也將在一個無限循環結束的條件:)
最後一個,不相關的話,通常最好不要使用常量(如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

你的第二個循環必須等於7而不是6 – Crazenezz 2012-04-23 02:08:09

+0

問題標題提到了一個尺寸爲[[20] [6]'的數組,並且在他的代碼中註釋了「你需要從票中選擇六個數中的哪一個」,所以我假設他想用六個數字,而不是七個。 – Bernard 2012-04-23 02:11:14

+0

啊我的不好,'++ ++'是第一個 – Crazenezz 2012-04-23 02:15:16

相關問題