数组下标越界是一个编程初学者最容易犯的错误。

以一个简单的一维数组为例:

  • int a[10];这是一个整型的数组a,有10个元素:a[0]-a[9],因为正确的下标应该是从0开始,到9结束,与生活习惯中的1-10不一样,于是产生一个a[10]的错误,即数组下标越界。

  • c和c++语言中数组下标越界,编译器是不会检查出错误的,但是实际上后果可能会很严重,比如程序崩溃等,所以在日常的编程中,程序员应当养成良好的编程习惯,避免这样的错误发生。

  • 若编辑网页时提示“数组下标越界”,除检查下上述问题外,再检查下文件中变量名称是否一致,很多时候是变量名称不一致所致,使用的角标大于等于数组的长度或为负数!

一. 异常示例

对于刚开始学习Java的大部分人来说,在使用数组的过程中,经常会遇到数组下标越界的异常。下面以一个实际案例来给大家进行说明:

public class ArrayTest {public static void main(String[] args) {int[] numbers = {1, 2, 3, 4, 5};int number = numbers[5];System.out.println(number);}
}

运行上面的程序,会出现如下异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5at ArrayTest.main(ArrayTest.java:4)

二. 解决思路

很多初学者遇到异常时通常都不会查看异常信息,而是通过看代码来找出原因。当然,在代码很少的情况下,这是可以的。但这样会形成一个不良的习惯:在后续编码的过程中经常忽视异常信息,直接在编码中查找异常,在代码很多的情况下,找出异常的效率极低,还可能无法找到异常引发的原因。

正确解决异常的方式应该是首先查看异常信息,比如该案例中出现了ArrayIndexOutOfBoundsException 异常,这是一个数组下标超出范围的异常,也就是业内人士常说的数组下标越界。这个异常出现的位置如下:

at ArrayTest.main(ArrayTest.java:4)

由这一行异常信息确定。也就是在 ArrayTest 这个类的第4行出现了数组下标越界异常。那么去查看第4行代码:

int number = numbers[5];

既然是数组下标越界,那就是说访问数组 numbers 中下标为5的元素时,出现的异常。说明这里的下标5超出了数组 numbers 的下标范围。而数组 numbers 的定义如下:

int[] numbers = {1, 2, 3, 4, 5};

由此可以看出,数组 numbers 的下标取值范围是0~4。而在使用过程中用了下标5,因此造成了数组下标越界异常。

为什么这里下标的取值范围是0~4, 这是由数组的基本特性决定的,这些都是基础知识,这块儿薄弱的同学可以在网上查阅资料进行学习,比如千锋教育官网就有一些免费的学习资料,当然你也可以在B站上找到这套资料,完全免费,为初学者打牢基础提供的一些干货。

扫码开始学习

海量Java免费资源获取

三. 总结

我们在处理异常的时候,一定要注意查看异常信息,快速定位出异常的位置,找到问题,解决问题。

Java初学最容易犯的错,数组下标越界异常怎么解决呢?相关推荐

  1. ArrayIndexOutOfBoundsException数组下标越界异常的解决过程

    一. 异常示例 对于刚开始学习Java的大部分人来说,在使用数组的过程中,经常会遇到数组下标越界的异常.下面壹哥就以一个实际案例来给大家进行说明: public class ArrayTest {pu ...

  2. java 数组越界异常_数组越界异常 求解决!!!

    源自:4-3 滚动状态判断与处理 数组越界异常 求解决!!! package com.example.imooc; import java.io.BufferedInputStream; import ...

  3. 5.java.lang.IndexOutOfBoundsException(数组下标越界异常)

    5.java.lang.IndexOutOfBoundsException(数组下标越界异常) 参考文章: (1)5.java.lang.IndexOutOfBoundsException(数组下标越 ...

  4. 数组下标越界异常是如何产生的

    首先,ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存.对于ArrayList而言,它实现List接口.底层使用数组保存所有元素.其操作 ...

  5. 如何解决数组下标越界异常

    如何解决数组下标越界异常 今天在写接口的时候运行发现有一个数组的下标越界异常了, 检查了一下发现实在上面的数组中有一些字符串没有大写,造成跟下面的数组字符串不一样,所以导致了数组下标越界异常.

  6. 数组下标越界异常解决方法

    数组下标越界异常解决方法 参考文章: (1)数组下标越界异常解决方法 (2)https://www.cnblogs.com/GreenCode/p/7345508.html 备忘一下.

  7. java下标越界的三种处理方式,数组下标越界,该怎么解决

    数组下标越界 package import_csv; import java.io.BufferedReader; import java.io.FileInputStream; import jav ...

  8. excel导出java.lang.ArrayIndexOutOfBoundsException: 0 POI导出excel报错数组下标越界0

    好久没写博客了,最近是有点懒了... 最近项目遇到个问题,用poi导出excel,本地和测试服务器都没问题,线上所有的导出都不能用,排查过JKD版本和配置文件都没问题,百思不得其解,最终问了朋友考虑到 ...

  9. java中数组下标越界的异常_java新手求助 数组下标越界异常

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是一个输入有n个数字的数组,选出k个最小值的函数. import java.util.*; public class example { public ...

最新文章

  1. monostate 状态_为什么Borg模式比Python中的Singleton模式更好
  2. linux中生成考核用的FAT32文件系统结构样例(一)
  3. 推荐系统之业务架构总览
  4. 字符设备驱动程序之按键——同步互斥阻塞
  5. Apache Nuvem将带来更多的开源云?
  6. PHP爱讯云商城源码v0.7.0-新增app功能
  7. Android开发笔记(一百五十九)Android7.0的分屏模式
  8. mysql 处理文件函数_mysql的字符串处理函数
  9. npm中强制关闭node.js
  10. python中List和Tuple的区别
  11. java基础知识精讲视频教程百度云盘分享!
  12. Delphi已经25岁了,我的公司每天都在使用Delphi开发跨平台的实时视频会议软件APP
  13. python自动生成文章原创_【Python】皮皮AI工具( AI文章伪原创工具)
  14. 特殊空白字符无法过滤
  15. 有云说 | 直播火爆的真正原因是什么?
  16. 解决minicom串口被锁Device /dev/ttyS? is locked
  17. R语言:无法精确计算带连结的p值
  18. 双臂电桥测低电阻大物实验数据处理(C++实现)
  19. 防止用户调整微信浏览器字体大小导致的显示异常
  20. 2022年IT服务行业研究报告

热门文章

  1. 7-2 歌唱比赛计分 (15分)
  2. windows下MX150显卡安装cuda11.3+cudnn8.4.1+torch1.12.0+torchvision0.13.0+torchaudio0.12.0
  3. 查看mysql错误日志命令_查看mysql错误日志
  4. 基于交叉算子和非均匀变异算子的飞蛾扑火优化算法-附代码
  5. windows多线程和网络编程
  6. 根据用户名生成一张图片
  7. 计算机专业 拒绝清华,2次拒绝北大邀请,获清华保送生资格,网友:清华计算机全球第一...
  8. Reeds-Shepp和Dubins曲线简介
  9. 【最强大脑】全球脑王的极客挑战赛之路:1413876分夺冠如何炼成?
  10. 基于新闻的社交王国News.me推离线新闻下载服务