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

news2024/9/29 15:29:51

在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的元素,并进行输出操作,这一指令,不正是发生再第五行吗,因此,我们只需要围绕着这一点进行分析,也就能够大概的分析出问题所在了 。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1991835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PicGo + gitee 免费搭建个人图床

目录 1 图床概念2 使用gitee和PicGo搭建图床流程2.1 下载安装PicGo工具 3 图片上传错误处理3.1 PicGo客户端提示404错误信息图片上传失败3.2 PicGo客户端提示400错误信息图片上传失败 1 图床概念 ​ "图床"是一个网络术语&#xff0c;它指的是一种用于存储和托管图片…

springboot基于微信小程序的旅游攻略-计算机毕业设计源码96432

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1技术可行性 2.1.2经济可行性 2.1.3操作可行性 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 …

实用python代码之修改图片大小

前言 通过这段代码可以修改图片的像素尺寸大小 运行截图如下 代码如下&#xff1a; import tkinter as tk from tkinter import filedialog, messagebox, colorchooser from PIL import Image, ImageDrawclass ImageProcessorApp:def __init__(self, root):self.root rootse…

审稿速度奇慢的大佬期刊?到底值不值得投?

关注GZH【欧亚科睿学术】&#xff0c;第一时间了解期刊最新动态&#xff01; &#x1f525; &#x1f525; &#x1f525; &#x1f525; 中科院1区SCI&#xff0c;各指标优秀&#xff01; 今天小编给大家介绍的是一本计算机科学领域的大佬期刊《Swarm and Evolutionary…

自驾畅游保定:参观总督署,品美食文化

这是学习笔记的第 2490篇文章 前几天跟孩子聊天&#xff0c;孩子说暑假都没出去玩了&#xff0c;暑假旅行的作业咋写&#xff1f;让我有满满的负疚感&#xff0c;去附近的公园、吃点美食不算旅游&#xff0c;得了&#xff0c;得安排一下一日游。 几个月前心心念的去保定&#x…

叉车AI监控影像防撞系统:减少损失,预防碰撞

叉车&#xff0c;这企业物流中的坚实力量&#xff0c;其安全运作是企业稳健前行的基石。在追求高效与效益的浪潮中&#xff0c;如何最大化地规避叉车事故&#xff0c;已悄然跃升为企业管理的头等大事。随着市场监管总局重锤落下&#xff0c;新版《场(厂)内专用机动车辆安全技术…

你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解

目录 一、什么是LVS 二、LVS的核心思想 三、 LVS的优势 四、LVS的调度算法 4.1. LVS的调度算法类型 4.2. LVS静态调度算法 4.3. LVS动态调度算法 4.4.在4.15版本内核以后新增调度算法 五、LVS软件相关信息 六、ipvsadm命令 七、 LVS的NAT模式实验详解 7.1实验环境 7.…

使用Github Pages结合MkDocs制作个人网站

目录 环境配置 创建网页仓库 创建Github仓库 创建本地仓库 本地运行网页 配置主题 网站部署到Github docs文件夹介绍 修改主页显示内容 添加新文件 mkdocs.yml文件介绍 其他效果 环境配置 为了正确的安装Mkdocs&#xff0c;需要先下载Python环境 下载地址&#x…

7日 ROI 提升150%,NetMarvel 助力越南厂商 Mirai 旗下解谜休闲手游实现高质增长!

解谜游戏是目前全球最受欢迎的休闲细分品类之一。对于厂商来说&#xff0c;解谜游戏开发成本低、制作周期短&#xff0c;打造成为爆款的几率更大。据 Sensor Tower 发布的数据&#xff0c;解谜游戏在全球市场累计的下载量已经超过500亿次&#xff0c;累计收入也已突破420亿美元…

MongoDB基础学习(1)Mongodb和MySQL的区别

在当今的软件开发领域&#xff0c;数据库的选择是一个至关重要的决策。MongoDB和MySQL作为两种广泛使用的数据库系统&#xff0c;各自拥有其独特的特性和优势。本文将从多个维度深入探讨MongoDB和MySQL之间的区别&#xff0c;帮助读者更好地理解和选择适合自身项目需求的数据库…

SQL面试题练习 —— 计算用户首单是即时单的比例

目录 1 题目2 建表语句3 题解 题目来源&#xff1a;美团。 1 题目 在外卖订单中&#xff0c;有时用户会指定订单的配送时间。现定义&#xff1a;如果用户下单日期与期望配送日期相同则认为是即时单&#xff0c;如果用户下单日期与期望配送时间不同则是预约单。每个用户下单时间…

Web-server日志分析命令

https://gist.github.com/hvelarde/ceac345c662429447959625e6feb2b47 通过状态码获取请求总数 awk {print $9} /var/log/apache2/access.log | sort | uniq -c | sort –rn按照IP的请求数量排序 awk {print $1} /var/log/apache2/access.log | sort | uniq -c | sort -rn |…

第 9 课:隐语联邦学习

隐语水平联邦框架介绍 隐语垂直联邦框架介绍 大模型微调技术 联邦大模型现状 可信执行环境(Trusted Execution Environment) 联邦大模型训练阶段存在的安全问题

“AI妖股”超微电脑业绩发布,股价暴跌

KlipC报道&#xff1a;周二&#xff0c;“AI妖股”服务器制造商超微电脑公布了第四财季财报&#xff0c;财报显示&#xff0c;超微电脑二季度营收53.08亿美元&#xff0c;同比增长142.95%&#xff1b;每股摊薄后盈利&#xff0c;6.25美元&#xff0c;市场预期8.07美元&#xff…

数据可视化Axure大屏原型制作分享

数据可视化大屏通过清晰、直观且易于理解的方式呈现大量复杂数据&#xff0c;已成为各行各业中不可或缺的工具。Axure作为一款功能强大的原型设计工具&#xff0c;为数据可视化大屏的制作提供了强大的支持和丰富的资源。 Axure RP 是一款强大的原型设计工具&#xff0c;非常适…

契约锁大型集团电子签及印控方案分享,无需重复部署、场景可拓展

契约锁在中大型客户市场以客户总量第一、本地化部署量第一领先行业&#xff0c;是汽车、保险、物流、食品、医药、工程、检测、家居等行业的40000多家中大型组织的电子签及印控服务商。 大型集团组织印章数量多则上千、甚至上万&#xff0c;用户规模高达十几万、数十万&#xf…

Ascon加密算法:轻量级加密的新选择

随着物联网、移动通信等领域的迅猛发展&#xff0c;信息安全问题日益凸显。加密算法作为保障信息安全的核心技术&#xff0c;一直备受关注。近年来&#xff0c;一款名为Ascon的加密算法逐渐崭露头角&#xff0c;成为轻量级加密领域的新宠。本文将为您介绍Ascon加密算法的原理、…

爬虫 Web Js 逆向基础:js 基础语法

网络爬虫对 Web Js 逆向主要是为了对各种研究加密参数&#xff0c;调试分析 JavaScript 代码来弄清加密参数的生成逻辑。 对于加密参数的逆向方式&#xff0c;个人认为 “对 js 源码进行补环境来模拟加密参数生成” 这种方法更加方便。 综上&#xff0c;想要做好 Js 逆向&…

如何利用 ChatGPT 提高工作效率?

内容创作与总结&#xff1a; 写作辅助&#xff1a;可以帮助撰写文章、报告、邮件等各种文本&#xff0c;如为招商银行写宣传文案、写论文、写故事等。学习材料生成&#xff1a;能够生成学习材料&#xff0c;如摘要、抽认卡和测验&#xff0c;帮助学生复习和学习课程。评估和考核…

JS爬虫逆向

JS反爬虫根本原因 / 基本原理&#xff1a; &#xff08;1&#xff09; 反爬虫&#xff1a; 限制爬虫程序访问服务器资源和获取数据的行为称为反爬虫。 &#xff08;2&#xff09;限制手段&#xff1a; 包括但不限于请求限制、拒绝响应、客户端身份验证、文本混淆和使用动态…