" java.lang.ArrayIndexOutOfBoundsException"

时间:2018-05-16 22:30:54

标签: java

public class Show {

public static void main (String args[]){
    String str;
    str = args[0];
    System.out.println("name is" +str);

}

}

//错误是索引之外的数组怎么样?

3 个答案:

答案 0 :(得分:1)

检查args.length是否大于0,如果是则继续返回(结束你的程序)。在调用程序时,需要传递程序参数,以使args数组为非空

public static void main (String args[]){
    if(args.length > 0)
    {
        String str;
        str = args[0];
        System.out.println("name is" +str);
    }
    else
        System.out.println("Args is empty!");
}

如果不检查args的大小并确保其大小大于或等于1,则以下调用args[0]将使该数组超出范围异常,因为索引0不存在一个大小为0的数组

答案 1 :(得分:1)

每当您使用命令提示符运行Java程序或想要提供命令行参数时,都会使用“String [] args”。

所以基本上它需要你通过命令行输入。如果您不使用命令行参数,那么它对您的代码没有任何意义。

例如。您的类名是“abc”,然后命令调用将是

  

javac [filename] .java

     

java abc 1 2 3

Javac用于编译源代码。

然后下一行调用你的类“abc”并发送“1 2 3”作为参数,它们存储在“String [] args”中,即args [0]将具有“1”,args [1]将具有“ 2“和args [2]将有”3“。

因此,如果您没有传递任何内容,则字符串[]仍为空,并且您正在尝试访问第0个元素,这就是为什么它会向您显示数组索引超出范围的异常。

答案 2 :(得分:0)

如果没有(没有命令行参数)而你拿第一个([0]),那是不可能的。考虑这样的事情:

public class Show {    
    public static void main (String args[]){
        if (args.length == 0) { showHelp(); return; }
        String str;
        str = args[0];
        System.out.println("name is" +str);
    }

    private static void showHelp() {
        System.out.println("Please provide at least one command line argument.");
    }
}