【问题标题】:ArrayIndexOutOfBoundsException when launching a java program启动 java 程序时出现 ArrayIndexOutOfBoundsException
【发布时间】:2015-11-09 15:11:02
【问题描述】:

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

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 at caesar.main(caesar.java:3)

【问题讨论】:

  • 您是否提供任何命令行输入?
  • @amit_183 是的,我是 ..
  • 你的键盘没有返回键吗?
  • @bpgeck 抱歉,我对这个很陌生,那是什么?

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


【解决方案1】:

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

java caesar arg0 arg1

例如:

java caesar somestring 10

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

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

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

【讨论】:

  • 好吧。所以我试过这个,它只是打印出错误消息。我该如何解决这个问题,以便它运行其余的代码?
  • @BananaB,您是否尝试在启动程序时传递参数?您如何首先启动它?命令行?还是某个 IDE 按钮?
  • 我只是使用IDE按钮运行
  • @BananaB 你用的是哪个IDE?
  • IDE 8.0.2 有关系吗?
【解决方案2】:

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

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

在通过索引访问数组元素之前,请确保该数组的大小至少为 index+1。如果索引为n,则大小应为n+1,否则会出现异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 2011-03-14
    • 2015-01-04
    • 2015-04-15
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多