You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java数组指定位置插入元素?(不使用ArrayList)

修正Java数组插入方法的编译错误与逻辑问题

存在的问题分析

  1. 编译错误根源:ins方法定义需要3个参数(数组、插入位置、待插入元素),但你在main中调用时仅传入了数组,参数不匹配导致编译失败。
  2. ins方法内部错误:
    • 新数组长度错误:插入元素后数组长度应为原数组长度+1,而非原长度,否则无法容纳新增元素且会触发数组越界。
    • 变量名错误:方法参数为a,但代码中误用了未定义的arr变量。
    • 元素移动逻辑错误:第二个循环未覆盖新数组的全部后续位置,无法完成原元素的后移操作。

修正后的完整代码

import java.util.Arrays;
public class MainArrays {
    public static int[] add(int[] arr, int val) {
        int[] newArray = Arrays.copyOf(arr, arr.length + 1);
        newArray[arr.length] = val;
        return newArray;
    }

    public static int[] del(int[] arr) {
        return Arrays.copyOf(arr, arr.length - 1);
    }

    public static int[] ins(int[] a, int pos, int num) {
        // 新数组长度=原数组长度+1,确保能容纳新增元素
        int[] result = new int[a.length + 1];
        // 复制插入位置之前的元素
        for(int i = 0; i < pos; i++) {
            result[i] = a[i];
        }
        // 插入目标元素
        result[pos] = num;
        // 复制插入位置之后的元素,每个元素后移一位
        for(int i = pos + 1; i < result.length; i++) {
            result[i] = a[i - 1];
        }
        return result;
    }

    public static void main(String[] args) {
        int[] a = { 1, 2, 4 };
        System.out.println(Arrays.toString(a));
        a = add(a, 7);
        System.out.println(Arrays.toString(a));
        a = del(a);
        System.out.println(Arrays.toString(a));
        // 注意Java数组是0索引,第3个位置对应索引2,传入待插入元素3
        a = ins(a, 2, 3);
        System.out.println(Arrays.toString(a));
    }
}

关键修正说明

  1. 参数调用修复:在main中调用ins(a, 2, 3),明确传入数组、目标位置(0索引)和待插入元素。
  2. 数组长度修正:将新数组长度设置为a.length + 1,保证能容纳原数组所有元素和新增元素。
  3. 变量名修正:把错误的arr.length改为a.length,与方法参数保持一致。
  4. 循环逻辑修正:第二个循环的终止条件改为i < result.length,遍历新数组的全部后续位置,完成原元素的后移操作。

运行输出结果

[1, 2, 4]
[1, 2, 4, 7]
[1, 2, 4]
[1, 2, 3, 4]

内容的提问来源于stack exchange,提问作者Babatundae Rakinami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:51:19