2012-04-23 70 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