数组下标越界异常(ArrayIndexOutOfBoundsException)以及解决方案

在Java学习的初期,我们往往可能会遇到一些程序的错误提示,告诉我们,程序出现了某些不正常的情况,在这种情况发生时,我们一般称之为出现了异常。

我们目前有两类常见的错误:

一个是编译时异常 ,出现这种异常时,我们在编译阶段就无法正常通过了,这就代表我们的语法出现了错误,需要即使更改,比如缺了个分号之类的

再一个就是运行时异常了,出现这种异常,我们一般可以正确的通过编译,但在运行阶段时,系统却会突然报错,这就表示我们可能时遇到一些逻辑错误了

具体会出现哪些情况,又该怎样解决呢?这时我们就需要根据异常的提示信息具体分析了。

尤其时到数组这一篇章时,有两种运行时异常,可能会反复的出现,这时候我们就需要好好观察一下我们的程序逻辑了,首先第一个就是我们今天要讲的:

数组下标越界异常:ArrayIndexOutOfBoundsException

数组下标越界异常,就是一个典型的运行时异常,通常遇到这种情况,我们的程序确实会正常进行编译,但只要一运行,程序就会出现上图所示的报错,这就代表,我们的逻辑可能出现了错误,下面我们来看一下例子:

public class Test {
    public static void main(String[] args) {
        int[] nums = new int[]{1,2,3,4,5};
        for(int i=0;i<=5;i++){
            System.out.println(nums[i]);
        }
        System.out.println("数组中的元素遍历并输出完毕");
    }
}

在上面的代码中,我们的数组有5个元素,它们的下标分别是,[0,1,2,3,4],但如果在for循环中,把i的初值设为0,并把结束条件为i<=5的话,我们这将会把数组中的[0,1,2,3,4,5]都拿出来并对其进行输出操作,直到i=6,循环结束。

但问题来了,数组下标是0-4,而我们却要将5位置的下标取出来进行输出,程序进行到这里,发现并没有下标为5的元素啊,于是程序就报出异常提示并结束运行了,下面的输出语句自然也不会执行了。

nums[5]这种写法本身并没有错,因此我们可以通过编译,但如果没有这个位置,我们还非要把这个位置中的东西取出来,再进行相应的操作肯定就不行了,因此一个运行时异常就自然产生了。

现在,我们知道了,出现这种异常的主要原因主要就是逻辑出现了错误,我们只需要讲条件修改,不再指定一个不存在的位置就可以了,像上面这个程序我们则可将循环修改为:

for(int i=0;i<5;i++){//将小于等于改为了小于
   System.out.println(nums[i]);
}

 此时i最大的值就是4了,等于5时,循环将会停止,程序也就能够正常运行了,下面的那个输出语句也能够正常输出了,即:

如果不做修改则会为: 

输出语句并没有正常执行,并弹出空指针异常,在红圈内,系统提示我们问题发生在第7行:

 

可以看到,取出第下标为5的元素,并进行输出操作,这一指令,不正是发生再第五行吗,因此,我们只需要围绕着这一点进行分析,也就能够大概的分析出问题所在了 。

那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值