数组越界问题

首先,在今天编写代码时遇到了这样一个报错:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

问题展示

1.编写水仙花数的代码

2.运行后报错

问题解决

一,设置断点

如图所示

因为我写的是一个方法,所以断点设置在主方法即可。

然后再进行运行


可以发现,这里arr[length]后出现了我们的报错信息,那么可以基本确定报错出现在这里了,然后回看代码

int []arr = new int[3];
        int []arr2 = new int[900];
        System.out.print("水仙花数有: ");
        int length = 0 ;
        for (int i =100;i<1000;i++){
            int temp = i ;
            arr[2] = temp%10;
            temp /= 10;
            arr[1] = temp%10;
            temp /= 10;
            arr [0] = temp;
            if (arr[0]*arr[0]*arr[0]+arr[1]*arr[1]*arr[1]+arr[2]*arr[2]*arr[2] == i){
// FIXME:这里不该使用arr数组,而是使用arr2数组,arr数组的最大值为3,水仙花数有4个,故而造成了数组越界的问题。
                arr[length] = i;
                length ++ ;
            }
        }

我的本意是创建一个存储水仙花数的数组,然后在判断这个数字是水仙花数时,将水仙花数存起来以便返回。但是因为我用来分离水仙花数各个位数的数组也是arr起头,所以将他们两个搞混了。导致arr[]数组越界。导致报错

二,读报错

还有一种解决方案是直接读报错,回看我们的报错信息可以发现,我们的报错其实就告诉了我们哪一行出现了问题,

明显看到是28行和第7行代码出现问题,

而最上方的Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

这一行关键信息,我们应该从java.lang看起,Array是数组的意思,Index是索引的意思,OUt是外面,超过的意思,后面暂时不知道了,题主英语没过四级,所以翻译也是很一般。但是我们可以推断出好像是数组的索引出问题了,貌似是索引超了的意思,很自然就联想到了数组越界了。再看到28行代码一般就反应过来了。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值