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

使用Java Scanner实现支持增删查命令的数组操作程序开发求助

Java数组操作命令行程序实现方案

原代码核心问题

  • 执行input.nextInt()读取数组容量后未处理换行残留,会导致后续首次nextLine()读取到空值
  • 双层循环逻辑错误,没有做指令解析,只是重复覆盖数组元素赋值
  • 缺失ADD/DELETE/VIEW/DISPLAY四个命令的对应处理逻辑
  • 没有处理数组元素的实际存储计数、增删的边界校验

修正后完整可运行代码

import java.util.Scanner;

public class ArrayOperator {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 读取数组最大容量
        int maxSize = input.nextInt();
        input.nextLine(); // 消费nextInt留下的换行符,避免后续读行异常
        String[] arr = new String[maxSize];
        int currentCount = 0; // 记录数组当前实际存储的有效元素数量

        while (input.hasNextLine()) {
            String line = input.nextLine().trim();
            if (line.isEmpty()) continue;
            // 按第一个空格拆分,区分命令和参数
            String[] parts = line.split(" ", 2);
            String command = parts[0].toUpperCase();

            switch (command) {
                case "ADD":
                    if (currentCount >= maxSize) {
                        System.out.println("数组已满,无法新增元素");
                        break;
                    }
                    if (parts.length < 2) {
                        System.out.println("ADD命令需要携带要添加的单词参数");
                        break;
                    }
                    arr[currentCount] = parts[1];
                    currentCount++;
                    break;
                case "VIEW":
                    if (parts.length < 2) {
                        System.out.println("VIEW命令需要携带下标参数");
                        break;
                    }
                    try {
                        int index = Integer.parseInt(parts[1]);
                        if (index < 0 || index >= currentCount) {
                            System.out.println("下标超出有效范围");
                            break;
                        }
                        System.out.println(arr[index]);
                    } catch (NumberFormatException e) {
                        System.out.println("VIEW命令的下标参数必须是整数");
                    }
                    break;
                case "DELETE":
                    if (parts.length < 2) {
                        System.out.println("DELETE命令需要携带要删除的内容参数");
                        break;
                    }
                    String target = parts[1];
                    boolean found = false;
                    for (int i = 0; i < currentCount; i++) {
                        if (target.equals(arr[i])) {
                            // 找到目标元素后,后续元素整体前移一位
                            for (int j = i; j < currentCount - 1; j++) {
                                arr[j] = arr[j + 1];
                            }
                            arr[currentCount - 1] = null;
                            currentCount--;
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        System.out.println("未找到要删除的元素");
                    }
                    break;
                case "DISPLAY":
                    for (int i = 0; i < currentCount; i++) {
                        if (i > 0) System.out.print(" ");
                        System.out.print(arr[i]);
                    }
                    System.out.println();
                    break;
                default:
                    System.out.println("不支持的命令:" + command);
            }
        }
        input.close();
    }
}

运行验证

使用题目给出的输入样例运行上述代码,输出完全匹配要求结果:

not
this IS real

内容的提问来源于stack exchange,提问作者Firecy Enden

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:54:01