Java 过早退出

Java 过早退出,java,loops,for-loop,Java,Loops,For Loop,此循环工作正常,但有时会过早退出。我在其中设置了一段代码,以便查看随机数。只有当随机数等于用户输入的编号最高的问题时,它才会过早关闭 (例如,用户需要10个问题,如果随机数为10,则程序退出。) 我不知道为什么,因为我将其设置为if(random number,似乎您可能在最后一行有一个超出边界的数组,如图所示: String[] userAnswer = new String[x]; JOptionPane.showMessageDialog(

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

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


我不知道为什么,因为我将其设置为if(random number,似乎您可能在最后一行有一个超出边界的数组,如图所示:

            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] ...
最好您还应调整随机生成:

aa = r.nextInt ( x );

您是指外部for循环:

for (int loop = 1; loop < loopCount; loop++) {
for(int-loop=1;loop
或内部for循环

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

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

您的问题是数组索引从0开始,变为长度-1。如果长度是
x
,则最高的索引是
x-1
,因此当输入是精确的ly
x
如果您尝试索引到数组中,它将失败


条件应该是
abc

我不确定forLoop和loopCount是从哪里来的,但看起来for循环被关闭了一个。我通常会为(x=0;xout of bounds?我不明白,抱歉。j被设置为随机数,所以它应该是userAnswer[randomNumber to Drawing from a array]@Nick,抱歉,第一个版本引用了错误的代码部分,希望现在更清楚。等等,x不是数组的长度吗?x定义为用户想要的问题总数,所以我在数组中声明了x,好像用户想要10个问题userAnswer将是字符串[10]@Nick,正如其他人所提到的,Java数组是基于零的,因此如果
youraray.length==x
则可以合法地索引数组中的元素
0..x-1
。引用
youraray[x]
因此会导致IndexOutOfBoundsException。这解决了主要问题。它现在在不退出的情况下工作。现在它是wierd。我输入正确的答案,它告诉我我错了……但我是对的。例如:我输入c,我知道它是对的……它应该将c与c进行比较,得出0,如果它们相等……应该吐出正确的!但我答错了!正确的答案是c。它使我变成了wtf。如果循环过早关闭,它将无法正常工作。看起来您已经选择了答案。但稍后,请学习如何给出有意义的变量名。aa、abc和x到底是什么?
for (int loop = 1; loop < loopCount; loop++) {
for (overValue = 1; overValue < forLoop; overValue++);