错误:线程" main"中的异常java.lang.ArrayIndexOutOfBoundsException:0

时间:2014-05-01 20:49:38

标签: java error-handling

class Option{
  public static void main ( String[] args ){
    if ( args[0].equals( "-en" )){
     System.out.println( "English Option" ) ;
    } else if ( args[0].equals( "-es" )){
        System.out.println( "Spanish Option") ;     
     }
     else System.out.println( "Unrecognized option" ) ;
  }
}

尝试运行时我收到此错误

线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0         在Option.main(Option.java:5)

如果这很简单,我很难对编码感到遗憾

提前致谢

3 个答案:

答案 0 :(得分:2)

当您启动程序时,您没有传递任何命令参数,因此args的长度为0。因此,您无法访问其第一个元素:

args[0]

您可以传递command-line argument之类的

java Option argument_here

在你的情况下,它可能是:

java Option -en
java Option -es

但是当你没有通过任何参数检查args的长度是0时,你也可以处理这个案例:

if (args.length == 0)
    System.out.println("No arguments passed.");
else {
    // ...
}

答案 1 :(得分:1)

如果在运行程序时没有提供参数,则args的长度为零,并且没有args[0]元素。在检查第一个arg之前,您应该测试args.length > 0是否正确。例如:

public static void main ( String[] args ) {
    if (args.length == 1) {
        if ( args[0].equals( "-en" ))
        {
         System.out.println( "English Option" ) ;
        }
         else if ( args[0].equals( "-es" ))
         {
            System.out.println( "Spanish Option") ;     
         }
         else System.out.println( "Unrecognized option" ) ;
    } else {
         // zero or more than one option
         System.out.println( "Usage: java Option [-en | -es]" ) ;
    }
}

答案 2 :(得分:0)

在检查args [0]中的值之前,你应该总是考虑没有args [0]