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;