启动java程序时ArrayIndexOutOfBoundsException

时间:2015-08-17 04:06:49

标签: java command-line-arguments indexoutofboundsexception netbeans-8

我目前正在进行一项任务,但在运行我的代码时似乎存在问题。

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 = "";

这是我收到的错误:

  

线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:0在caesar.main(caesar.java:3)

2 个答案:

答案 0 :(得分:4)

您没有将命令行参数传递给您的程序,也不会检查它们是否通过。要传递参数,请启动您的程序,如

java caesar arg0 arg1

例如:

java caesar somestring 10

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

program arguments in NetBeans

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

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

答案 1 :(得分:0)

Tagir's Answer解释了如何将参数传递给Java类。我想解释异常java.lang.ArrayIndexOutOfBoundsException的含义。

当您尝试访问不存在的数组中的元素时,会出现

ArrayIndexOutOfBoundsException。在您的情况下,您尝试访问第一个元素,但数组为空,这就是您获得ArrayIndexOutOfBoundsException的原因。

在通过索引访问数组元素之前,请确保该数组的大小至少为index + 1。如果索引为n,则大小应为n+1,否则您将获得例外。