Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组索引超出边界异常-没有明显的异常原因_Java_Arrays_Exception_Overflow - Fatal编程技术网

Java 数组索引超出边界异常-没有明显的异常原因

Java 数组索引超出边界异常-没有明显的异常原因,java,arrays,exception,overflow,Java,Arrays,Exception,Overflow,晚上好,伙计们:)! 我只是想知道是否有人能发现我做错了什么?我制作了一个数组分类器,如果发现重复项,它会更改其中一个数组值。代码在这里 for (int j = 0; j < arrayIn.length; j++){ int temp = j++; if (arrayIn[j] == temp) arrayIn[j] = DUPLICATEREMOVE; } 然后程序按预期工作。因此,从这一行抛出异常。我还更改了语句

晚上好,伙计们:)! 我只是想知道是否有人能发现我做错了什么?我制作了一个数组分类器,如果发现重复项,它会更改其中一个数组值。代码在这里

 for (int j = 0; j < arrayIn.length;  j++){
        int temp = j++;
        if (arrayIn[j] == temp)
            arrayIn[j] = DUPLICATEREMOVE;
    }
然后程序按预期工作。因此,从这一行抛出异常。我还更改了语句,改为显示常量,即:

arrayIn[j] = 7;
int temp也是一个实验,与之前一样,if条件如下:

 if (arrayIn[j] == arrayIn[j++])
我认为这可能是个错误。 我有点被我做错的事情弄糊涂了,所以如果有人能发现我做错了什么,我将不胜感激:)!
谢谢。

您将
j
增加了两次。替换

int temp = j++;


可能使用
int temp=j+1
而不是
j++
?我感觉每个循环都要增加j两次,等等。

如果您使用调试器或只使用
println
语句逐步执行代码,则很容易发现这一点。花点时间学习如何正确调试代码,这样可以为自己(和其他人)节省大量时间。forloop检查j是否仍在范围内,但在循环内也会增加它。当j==arrayIn.length时,后者将生成异常。我感觉这是由于忽略了++运算符引起的。它不仅返回当前的int值,还递增现有变量。感谢您的时间和帮助:)
int temp = j++;
int temp = j+1;