循环过早退出

时间:2010-06-03 13:04:53

标签: java loops for-loop

这个循环工作正常,但有时过早退出。我在其中设置了一段代码,以便我可以查看随机数。只有当随机数等于用户输入的最高编号问题时,它才会过早关闭

(例如......用户想要10个问题,如果随机数为10则程序退出。)

我不知道为什么因为我将它设置为if(随机数< =问题数量)

for ( int loop = 1; loop < loopCount; loop++ )
{
   aa = r.nextInt ( 10 + 1 );
   abc = ( int ) aa;

   String[] userAnswer = new String[x];

   JOptionPane.showMessageDialog ( null, abc );

   if ( abc <= x )
   {
      for ( overValue = 1; overValue < forLoop; overValue++ );
      {
         userAnswer[j] = JOptionPane.showInputDialog ( null, "Question " + quesNum + "\n" + questions[abc] + "\n\nA: " + a[abc] + "\nB: " + b[abc] + "\nC: " + c[abc] + "\nD: " + d[abc] );

         if ( userAnswer[j].equals ( answers[j] ) )
         {
            JOptionPane.showMessageDialog ( null, "Correct. \nThe Correct Answer is " + answers[abc] );
         }
         else
         {
            JOptionPane.showMessageDialog ( null, "Wrong. \n The Correct Answer is " + answers[abc] );
         }//else

      }//for

   }//if

}//for

4 个答案:

答案 0 :(得分:1)

似乎你可能在显示的最后一行有一个数组超出范围:

            String[] userAnswer = new String[x];

            JOptionPane.showMessageDialog(null,abc);

            if(abc <= x)
            {
                for(overValue = 1; overValue < forLoop; overValue++);
                {
                    ... questions[abc] ... a[abc] ... b[abc] ... c[abc] ... d[abc] ...

如果数组questionsabcd的大小为xuserAnswer is),用x索引它们会导致这样的异常。

你应该有

的条件
            if(abc < x)

并且最好还应该调整随机生成:

aa = r.nextInt ( x );

答案 1 :(得分:0)

你的意思是外部for循环:

for (int loop = 1; loop < loopCount; loop++) {

或内部for循环

for (overValue = 1; overValue < forLoop; overValue++);

for循环都有问题,因为初始数字应为0而不是1.另一个问题是第二个for循环以;结束,所以它根本不会做任何事情

答案 2 :(得分:0)

你的问题是数组索引从0开始并转到length-1。如果长度为x,则最高索引为x-1,因此当输入完全为x并且您尝试索引到数组时,它将失败。

条件应为abc < x

答案 3 :(得分:0)

我不确定你从哪里得到forLoop和loopCount,但它看起来像for循环是一个接一个。我通常写(x = 0; x&lt; X; x ++)或for(x = 1; x&lt; = X; x ++)。

我不认为这是你的实际问题,但需要检查。