代码之家  ›  专栏  ›  技术社区  ›  ScarletEnvy

启动java程序时的ArrayIndexOutOfBoundsException

  •  1
  • ScarletEnvy  · 技术社区  · 9 年前

    我目前正在处理一项任务,但运行代码时似乎有问题。

    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中的异常:caesar.main处的0(caesar.java:3)

    2 回复  |  直到 9 年前
        1
  •  4
  •   Tagir Valeev    9 年前

    您没有向程序传递命令行参数,也没有检查是否传递了这些参数。要传递参数,请启动程序

    java caesar arg0 arg1
    

    例如:

    java caesar somestring 10
    

    要在NetBeans 8.0.2 IDE中执行此操作,请打开Project Properties,选择Run项,然后在其中指定参数:

    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
    }
    
        2
  •  0
  •   Community Lee    7 年前

    Tagir's Answer 解释了如何向Java类传递参数。我想解释一下什么是例外 java.lang.ArrayIndexOutOfBoundsException 方法

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

    在通过索引访问数组元素之前,请确保该数组的大小至少为索引+1 n 尺寸应为 n+1 如果不是,你会得到例外。