删除数组下标的元素(详解)

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));


    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,我们可以通过使用一个新的数组删除指定下标元素。具体步骤如下: 1. 首先,创建一个新的整型数组,大小比原数组少一个元素。可以使用`Arrays.copyOf()`方法来实现,该方法可以创建一个指定大小的新数组,并复制原数组元素到新数组中。 2. 然后,使用一个循环来遍历原数组中的元素。在循环中,判断当前下标是否为需要删除下标。 3. 如果当前下标不是需要删除下标,就将原数组中的元素复制到新数组中。 4. 最后,返回新数组,即为删除指定下标元素后的结果。 以下是用代码示例说明上述过程: ```java public class Main { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; int indexToRemove = 2; // 要删除下标 int[] newArray = deleteFromArray(array, indexToRemove); // 打印新数组 for (int num : newArray) { System.out.print(num + " "); } } public static int[] deleteFromArray(int[] array, int indexToRemove) { int[] newArray = new int[array.length - 1]; // 创建新数组 int currentIndex = 0; // 新数组的当前下标 for (int i = 0; i < array.length; i++) { if (i != indexToRemove) { // 判断当前下标是否为要删除下标 newArray[currentIndex] = array[i]; // 复制原数组元素到新数组 currentIndex++; // 新数组下标增加 } } return newArray; // 返回新数组 } } ``` 上述代码使用一个新数组`newArray`来存储删除指定下标元素后的结果,然后遍历原数组`array`,将不需要删除元素复制到新数组中。最后,返回新数组`newArray`。 执行上述代码,将输出`1 2 4 5`,这就是删除指定下标元素后的结果。 ### 回答2: 在Java中,无法直接删除一维数组指定下标元素,因为一维数组的长度是固定的,无法在初始化之后改变。 然而,我们可以通过创建一个新的数组,将需要保留的元素复制到新数组中,来间接实现删除操作。具体的步骤如下: 1. 首先,创建一个新的数组,长度为原数组的长度减去1。可以使用以下语句来创建新数组: ```java int[] newArray = new int[array.length - 1]; ``` 2. 接下来,使用一个循环遍历原数组。当遇到需要删除下标时,跳过该元素,否则将元素复制到新数组中。可以使用以下代码来实现: ```java int j = 0; // 新数组下标 for (int i = 0; i < array.length; i++) { if (i == index) { // 跳过需要删除下标 continue; } newArray[j] = array[i]; // 复制元素到新数组中 j++; // 新数组下标自增 } ``` 3. 最后,将新数组赋值给原数组,以完成删除操作: ```java array = newArray; ``` 完整的方法示例: ```java public static int[] deleteArray(int[] array, int index) { int[] newArray = new int[array.length - 1]; int j = 0; for (int i = 0; i < array.length; i++) { if (i == index) { continue; } newArray[j] = array[i]; j++; } return newArray; } ``` 需要注意的是,将新数组赋值给原数组只是在这个方法中有效,调用这个方法后会返回一个新的数组,原数组不会被修改。 ### 回答3: 在Java中,我们可以通过以下步骤来使用`deleteArray`方法删除指定下标元素: 首先,我们需要创建一个新的数组,将原始数组中的所有元素复制到新数组中,除了指定下标元素。然后,将新数组赋值给原始数组。 下面是一个示例代码: ```java public static int[] deleteArray(int[] array, int index) { // 创建新的数组,长度比原始数组少一个元素 int[] newArray = new int[array.length - 1]; // 复制原始数组中除了指定下标的所有元素到新数组中 for (int i = 0, j = 0; i < array.length; i++) { if (i != index) { newArray[j++] = array[i]; } } // 将新数组赋值给原始数组 array = newArray; // 返回删除指定下标元素后的数组 return array; } ``` 要使用该方法,我们可以在主函数中调用它,并传入一个需要删除元素数组和要删除元素下标。下面是一个使用示例: ```java public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; int index = 2; array = deleteArray(array, index); for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } } ``` 上述代码的输出结果是`1 2 4 5`,元素`3`已经被成功删除。 通过这种方法,我们可以在Java删除指定下标元素。注意,该方法是创建一个新的数组并将原始数组复制到新数组中来实现删除操作,因此在实际应用中,可能会有一些性能影响。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值