当前位置: 代码迷 >> Java相关 >> 程序展示ArrayIndexOutOfBoundsException
  详细解决方案

程序展示ArrayIndexOutOfBoundsException

热度:50   发布时间:2016-04-22 21:02:47.0
程序显示ArrayIndexOutOfBoundsException
本帖最后由 icebreath 于 2014-06-04 13:14:34 编辑
以下是小弟的代码:





其实这个程序想要显示的东西很简单

这个程序将会检查全部三行

如果某一行(同时三行也可以)的数字全部一样的话,那就把结果显示出来

例子:

101
000
111

结果:

全部0在第1行
全部1在2行

程序在build的时候没问题,可是运行时却出现那个错误,所以小弟想要求指教
------解决方案--------------------
数组越界错误,楼主,作为一个程序猿, debug是很重要的,你为什么不debug调试一下呢? 为什么呢?什么呢?么呢?呢?
------解决方案--------------------
我懂了。问题出在这里  首先要先了解For循环的结构、循环变量、以及里面的循环条件。

你设了个3*3的数组,实际上的元素有9个,下标是[0][0]到[2][2]

你的for循环,例如for(i=0;i<3;i++)

总共执行3次循环看似是没有问题的,但是我们来详细解释一下。

第一次循环(初次):i赋值为0,判断i是否小于3 ,i实际为0,执行循环

第二次循环:i++,判断i是否小于3,i实际为1,执行循环

第三次循环:i++,判断i是否小于3,i实际为2,执行循环

第四次循环:i++,判断i是否小于3,i实际为3,跳出循环。(记住,此时i已经变为3了)

所以在后面,引用的时候才会发生数组越界。



------解决方案--------------------
for()语句格式:


for(表达式1;表达式2;表达式3),其中【表达式2】一般作为约束条件。

每次执行的顺序是:

初次:表达式1,表达式2

以后每次都是:表达式3,表达式2


当跳出循环之后,实际上也执行了一次i++,所以下标越界。

------解决方案--------------------
debug 调试看看很常见的错误。
------解决方案--------------------
就按照你最原始的代码,输出的时候把 arr[k][l] 改成arr[k][l-1]

因为最后跳出循环的时候多执行了一次  l++,所以l才会越界。
------解决方案--------------------
最好在eclipse打开行号,eclipse代码区右单击,选择show line number
这样就知道是哪一行抛出的错误

以你的程序来看是最后一个system.out.println,因为上面的循环,k和l都已经是3了,所以才数组越界。。
  相关解决方案