使用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
相关产品推荐
相关产品推荐

