以下是小弟的代码:
其实这个程序想要显示的东西很简单
这个程序将会检查全部三行
如果某一行(同时三行也可以)的数字全部一样的话,那就把结果显示出来
例子:
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了,所以才数组越界。。