这个循环工作正常,但有时过早退出。我在其中设置了一段代码,以便我可以查看随机数。只有当随机数等于用户输入的最高编号问题时,它才会过早关闭
(例如......用户想要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
答案 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] ...
如果数组questions
,a
,b
,c
或d
的大小为x
(userAnswer
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 ++)。
我不认为这是你的实际问题,但需要检查。