package Book.Arrary;/** * @description: * @author: Honors * @create: 2021-12-03 */ import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader; import java.lang.reflect.Array; import java.util.Arrays; /** * @description: * @author: zkh * @create: 2021-11-21 */ public class test002 { public static void main(String[] args) { ///删除下标为3对应的元素,数组变为{12,48,56,78,48,0} //删除第一个48,数组变为{12,56,78,48,29,0} //第一种思路: // 1.将每一个数字的下标标记出 // 2.看到下标为3的数字删除后,后一个数向它的位置补,最后会生一个位置,就是0 // {12,48,56,78,48,29}; // 0 1 2 3 4 5 int[]arr = {12,48,56,78,48,29}; // // arr[3]=arr[4]; // //arr[4]=arr[5]; // arr[5]=0;//因为前面有个空。依次往前补,这个地方就会空出来,为0. // for (int i = 0; i < arr.length; i++) { // System.out.print(arr[i] +"\t");//遍历后的结果没问题 // /* // 思考,这个方法到底好不好呢?如果我这个数组特别长,那再去给它标下标,是不是很麻烦呢? // (教大家一个idea输出数组的快捷键:System.out.println(Arrays.toString(arr));小括号里的是数组的名称) // */ // } //方法二: //思路:1.遍历一个数组,将下标放在for循环内,这样就不用那么笨拙的数是第几个下标 //2.以下做法还能够优化 // for (int i =3;i <=4;i++){ // arr[i]=arr[i+1]; // } // arr[5]=0;//这里的5等于0,还是因为前面删除数了,所以后面要往前面补,但是会空个位置出来! // System.out.println(); // System.out.println(Arrays.toString(arr)); //优化如下: // int index = 3; // for (int i = index; i <= arr.length-2;i++){//这里的arr的范围变成了长度减2,可以对照上一步看;i直接变化为一个index,不写死 // arr[i]=arr[i+1]; // } // arr[arr.length-1]=0;//这里还是一样的,数组是从0开始数的,所以数组的长度-1就是最后一个数字,因为删掉前一个数,后一个数往前补,所以空岛最后一个数,为0 // System.out.println(Arrays.toString(arr)); //第二个问题:删除第一个48,数组变为{12,56,78,48,29,0} //思路:同样可以想到下标索引值,第一个48的下标索引值为1,用上面的方法即可 // int index = 3; // for (int i = index;i <=arr.length-2;i++){ // arr[i]= arr[i+1]; // } // arr[arr.length-1]=0; // System.out.println(Arrays.toString(arr)); //还可以优化 int index=-1; for (int i =0 ;i <arr.length;i++){ if (arr[i]==666){ index = i; break; } } if (index >=0 && index <=arr.length-1) for (int i =index ; i <=arr.length-2 ; i++){ arr[i] = arr[i+1]; } arr[arr.length-1]=0; System.out.println(Arrays.toString(arr)); } }
删除数组下标的元素(详解)
最新推荐文章于 2023-08-16 18:28:50 发布