博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
出现“Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException”:数组下标越界
阅读量:3959 次
发布时间:2019-05-24

本文共 924 字,大约阅读时间需要 3 分钟。

给定一个数组,把数组中的所有0全都移到数组后边且不改变其他非0的数原先的顺序

比如说原来的数组为:[7, 3, 0, 1, 2, 0, 7, 0, 9, 6, 2]

经过变换后为:[7, 3, 1, 2, 7, 9, 6, 2, 0, 0, 0]

在写代码的时候我不注意然后出现ArrayIndexOutOfBoundsException,即数组下标越界的错误。

先贴一下代码:

public static void main(String[] args) {
int[] nums = {
7,3,0,1,2,0,7,0,9,6,2}; System.out.println("给定的数组nums:"+ Arrays.toString(nums)); for (int i=0;i
0;j--){
if (nums[j]==0){
//如果是最后一个是0,就break break; } if (nums[j-1] ==0){
//如果前一个是0,那么就和后一个数交换位置 nums[j-1]=nums[j]; nums[j]=0; } } } System.out.println("变换后的数组:"+Arrays.toString(nums));

说一下我出错的点:在前面的

int i=0;i<nums.length-1;i++ 里我一开始写的是“int i=0;i<nums.length;i++”,对于数组nums来说,并没有发生越界问题,但是我后面写了j=i+1,如果我的i还是<数组长度的大小,那么我的j就会铁定在后面大小会大于数组nums的长度,所以前面的i要写成i<nums.length-1

运行结果:

在这里插入图片描述

转载地址:http://kdozi.baihongyu.com/

你可能感兴趣的文章
openssl、MD5的linux安装方法
查看>>
DevC++ 工程没有调试信息的解决办法
查看>>
http消息长度的确定
查看>>
手机和电脑如何连接蓝牙
查看>>
HTTP协议参数
查看>>
wireshark检索命令
查看>>
五人分鱼问题(附答案)
查看>>
linux查看文件有多少行
查看>>
error:previous declartion of "XXX" is here的解决方法
查看>>
sha1的几个函数的使用
查看>>
为什么int型的数组用memset不能清零(memset的使用规范)
查看>>
<转>CRC校验、MD5、SHA1算法的概念和可靠性现状
查看>>
linux杀死进程详解
查看>>
字符串表示的IP地址与点分式表示的IP地址间的相互转化
查看>>
implicit declaration of function 这种警告问题的原因及解决方法
查看>>
utorrent如何处理占资源过大的问题
查看>>
<好文分享>妖怪和和尚过河问题
查看>>
uTP协议的前世今生(from wikipedia)
查看>>
uTP协议的前世今生(from wikipedia)
查看>>
utp的包头格式<2>
查看>>