Java中如何实现动态管理数组元素的菜单系统

来源:站长平台作者:小宵头衔:网络博主
导读:本期聚焦于小伙伴创作的《Java中如何实现动态管理数组元素的菜单系统》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Java中如何实现动态管理数组元素的菜单系统》有用,将其分享出去将是对创作者最好的鼓励。

在Java原生数组中,长度一旦定义就无法修改,这给需要频繁增减元素的场景带来了不便。通过菜单系统配合数组扩容、元素移动等逻辑,我们可以实现数组元素的动态管理,满足灵活操作的需求。

Java中如何实现动态管理数组元素的菜单系统

核心实现思路

动态管理数组的核心在于当数组容量不足时进行扩容,当元素被删除时进行元素前移,同时维护一个记录当前有效元素数量的变量。菜单系统则通过循环接收用户输入的选项,调用对应的数组操作方法。

基础变量定义

首先需要定义原始数组、有效元素计数器和扫描器对象,代码如下:

import java.util.Scanner;

public class DynamicArrayMenu {
    // 初始数组容量
    private static final int INIT_CAPACITY = 5;
    // 存储元素的数组
    private static int[] arr = new int[INIT_CAPACITY];
    // 当前有效元素数量
    private static int size = 0;
    // 扫描器对象,用于接收用户输入
    private static Scanner scanner = new Scanner(System.in);
}

数组扩容方法

当数组已满需要添加新元素时,创建一个容量更大的新数组,将原数组元素拷贝过去,再让原数组引用指向新数组:

private static void expandArray() {
    // 扩容为原数组的2倍
    int newCapacity = arr.length * 2;
    int[] newArr = new int[newCapacity];
    // 拷贝原数组元素到新数组
    for (int i = 0; i < arr.length; i++) {
        newArr[i] = arr[i];
    }
    // 原数组引用指向新数组
    arr = newArr;
    System.out.println("数组已扩容,当前容量:" + newCapacity);
}

添加元素方法

添加元素前先判断数组是否已满,满了则先扩容,再将新元素放到有效元素的末尾,有效元素数量加一:

private static void addElement() {
    System.out.print("请输入要添加的整数:");
    int num = scanner.nextInt();
    // 判断数组是否已满
    if (size == arr.length) {
        expandArray();
    }
    arr[size] = num;
    size++;
    System.out.println("元素添加成功");
}

删除元素方法

删除元素需要先找到目标元素的位置,然后将该位置之后的元素逐个前移,最后有效元素数量减一:

private static void deleteElement() {
    if (size == 0) {
        System.out.println("当前数组为空,无法删除元素");
        return;
    }
    System.out.print("请输入要删除的整数:");
    int target = scanner.nextInt();
    int index = -1;
    // 查找目标元素的位置
    for (int i = 0; i < size; i++) {
        if (arr[i] == target) {
            index = i;
            break;
        }
    }
    if (index == -1) {
        System.out.println("未找到目标元素");
        return;
    }
    // 元素前移
    for (int i = index; i < size - 1; i++) {
        arr[i] = arr[i + 1];
    }
    size--;
    System.out.println("元素删除成功");
}

查询与修改方法

查询方法遍历数组输出所有有效元素,修改方法先查找目标元素再替换其值:

private static void queryElements() {
    if (size == 0) {
        System.out.println("当前数组为空");
        return;
    }
    System.out.print("当前数组元素:");
    for (int i = 0; i < size; i++) {
        System.out.print(arr[i] + " ");
    }
    System.out.println();
}

private static void updateElement() {
    if (size == 0) {
        System.out.println("当前数组为空,无法修改元素");
        return;
    }
    System.out.print("请输入要修改的原整数:");
    int oldNum = scanner.nextInt();
    int index = -1;
    for (int i = 0; i < size; i++) {
        if (arr[i] == oldNum) {
            index = i;
            break;
        }
    }
    if (index == -1) {
        System.out.println("未找到目标元素");
        return;
    }
    System.out.print("请输入新的整数:");
    int newNum = scanner.nextInt();
    arr[index] = newNum;
    System.out.println("元素修改成功");
}

菜单系统整合

将各个功能方法整合到主函数的循环菜单中,持续接收用户操作直到用户选择退出:

public static void main(String[] args) {
    int choice;
    do {
        System.out.println("\n===== 动态数组管理菜单 =====");
        System.out.println("1. 添加元素");
        System.out.println("2. 删除元素");
        System.out.println("3. 查询所有元素");
        System.out.println("4. 修改元素");
        System.out.println("5. 退出系统");
        System.out.print("请输入你的选择:");
        choice = scanner.nextInt();
        switch (choice) {
            case 1:
                addElement();
                break;
            case 2:
                deleteElement();
                break;
            case 3:
                queryElements();
                break;
            case 4:
                updateElement();
                break;
            case 5:
                System.out.println("系统已退出");
                break;
            default:
                System.out.println("无效的选择,请重新输入");
        }
    } while (choice != 5);
    scanner.close();
}

注意事项

  • 数组扩容时尽量选择合适的扩容倍数,避免频繁扩容影响性能
  • 删除元素时要先判断数组是否为空,避免空指针或无效操作
  • 修改元素时要先确认目标元素存在,否则给出对应提示
  • 使用完Scanner对象后要及时关闭,释放资源

Java动态数组菜单系统数组操作修改时间:2026-06-05 23:09:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。