启动 java 程序时出现 ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException when launching a java program

我目前正在做一项作业,但 运行 我的代码似乎有问题。

public class caesar {
    public static void main(String args[]) {
        String inputString = args[0];
        char inputArray[] = inputString.toCharArray();
        int shiftLength = Integer.parseInt(args[1]);
        System.out.println("Input: " + inputString);
        String outputString = "";

这是我收到的错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at caesar.main(caesar.java:3)

您没有将命令行参数传递给您的程序,也没有检查它们是否已传递。要传递参数,请像

一样启动您的程序
java caesar arg0 arg1

例如:

java caesar somestring 10

要在 NetBeans 8.0.2 IDE 中执行此操作,请打开项目属性,select 运行 项,然后在其中指定参数:

您可能还想提前检查传递的参数数量以输出友好的错误消息。例如:

public static void main(String args[]) {
    if(args.length != 2) {
        System.err.println("Usage: java caesar <inputString> <shift>");
        return;
    }
    ... // the rest of your code
}

解释了如何将参数传递给 Java class。我想解释一下异常 java.lang.ArrayIndexOutOfBoundsException 是什么意思。

ArrayIndexOutOfBoundsException 当您尝试访问数组中不存在的元素时发生。在您的情况下,您正在尝试访问第一个元素,但数组为空,这就是您获得 ArrayIndexOutOfBoundsException.

的原因

在按索引访问数组元素之前,请确保该数组的大小至少为索引+1。如果索引是 n 大小应该是 n+1 否则你会得到异常。