gpt4 book ai didi

java - 具有设定数量元素的 ArrayIndexOutOfBoundException

转载 作者:行者123 更新时间:2023-12-02 06:03:54 24 4
gpt4 key购买 nike

我正在尝试模拟终端/文件系统。现在我正在解析和标记命令。

我正在尝试确定什么被视为有效命令。我的策略是检查输入数组中的索引 2 元素是否是字符串“empty”以外的任何内容。如果是,我的 checkValidCommand 方法将返回 false。

当前,当我运行程序并在输入中输入 "hi" 时,出现此错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at fileSystem2.MainActivity.checkValidCommand(MainActivity.java:43)
at fileSystem2.MainActivity.main(MainActivity.java:66)

我相信此问题是由于我的 String[] 输入 仅包含 3 个元素造成的。

代码:

检查有效输入。

    private static boolean checkValidCommand(String[] commandTokens) {
//boolean valid = false;
if (commandTokens[0].equals("exit")) {
return true;
}
else if (!commandTokens[2].equals("empty")) {
return false;
}
return true;
}

解析命令的代码

String[] input = new String[3];

for (int i = 0; i < input.length; i++) {
input[i] = "empty";
}

while(!input[0].equals("exit")) {
Scanner sc = new Scanner(System.in);
input = sc.nextLine().split(" ");
if (checkValidCommand(input)) {
System.out.print("Invalid Command!");
continue;
}
System.out.println(input.length);
switch(input[0]) {
// vi
case "vi":
System.out.println("hi");
break;
// ls
case "ls":
break;
// mkdir
case "mkdir":
break;
// pwd
case "pwd":
break;
}
}

最佳答案

命令

input = sc.nextLine().split(" ");

是否用数据填充现有数组(由input引用)。

它创建一个数组并将其引用分配给input

无论input指向什么,都会被取消引用并成为垃圾收集的对象。

关于java - 具有设定数量元素的 ArrayIndexOutOfBoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com