统计
  • 建站日期:2021-03-10
  • 文章总数:360 篇
  • 评论总数:2 条
  • 分类总数:9 个
  • 最后更新:7月4日
文章 知识分享

java应用程序报错:exception in thread main java.lang.ArrayIndexoutofbounds exeption:4

程序员丸子
首页 知识分享 正文
广告
 public static void reverse(int[] numbers) {
        //反转数组
        for (int i = 0,j = numbers.length; i < j; i++,j--) {
            //交换i和j的值,把后边一个位置的值交给一个临时变量先存起来
            int temp = numbers[j];
            numbers[j] = numbers[i];
            numbers[i] = temp;
        }
    }

问题:这是一开始写的一段代码,报了错误:exception in thread main java.lang.ArrayIndexoutofbounds exeption:4

先看这个数组反转如何实现?

反转数组时,需要定义一个临时变量temp,定义i和j用来记录数组中的位置。

实现数组反转时,比如numbers[i]里初始记录数组第一个值,numbers[j]里初始记录数组最后一个值,先把数组最后一个数赋值给temp,再将temp的值赋给number[i],此时最后一个数变成了第一个数,然后i++往后走,j--往前走,就可以将数组反转。

出现exception in thread main java.lang.ArrayIndexoutofbounds exeption:4

这是因为for (int i = 0,j = numbers.length; i < j; i++,j--)中出现了错误

我定义的数组长度为4,在数组中,数组下标是从0开始的,也就是numbers[0]是数组里第一个数,numbers[3]是数组里第四个数。但是我把j=numbers.length了,numbers.length=4,这个时候j的初始位置就成了numbers[4]了,就成了第五个数了,但是数组里只有四个数,所以这里j要等于numbers.length-1,就不会报错了

 

正确代码:

 public static void reverse(int[] numbers) {
        //反转数组
        for (int i = 0,j = numbers.length - 1; i < j; i++,j--) {
            //交换i和j的值,把后边一个位置的值交给一个临时变量先存起来
            int temp = numbers[j];
            numbers[j] = numbers[i];
            numbers[i] = temp;
        }
    }

你学废了吗?

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
Amarokv0.8.6 – 一键隐藏安卓手机隐私文件和应用
« 上一篇
简洁美观强大的文件管理器rs文件管理器2.1.0
下一篇 »
为了防止灌水评论,登录后即可评论!

HI ! 请登录
注册会员,享受下载全站资源特权。
欢迎登录

热门文章

时间计时器