本文共 924 字,大约阅读时间需要 3 分钟。
比如说原来的数组为:[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;i0;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/