public class IfElse{
public static void main(String argv[]){
IfElse ie = new IfElse();
ie.go(argv);//为什么是调用的函数是argv??
}
public void go(String[] sa){
String s = sa[0];
if(s.equals("true")){
System.out.println("OK");
}else if(s.equals("false")){
System.out.println("Not OK");
}else{
System.out.println("Invalid command parameter");
}
}
}
我编译的时候 没错,但为什么出现Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at IfElse.go(IfElse.java:7)
        at IfElse.main(IfElse.java:4)

解决方案 »

  1.   

    argv是你运行main时所带的参数,是String的数组,默认是没有元素的;
    当程序运行到String s = sa[0]时就会报数组越界的错误;
    你编译后可以这样运行:java IfElse true
      

  2.   

    ls说的对,到命令行下执行 java IfElse 参数,这样argv就有值了不会再报错
    或者按下面也能看到效果
    ……
    argv = new String[] { "true" };
    IfElse ie = new IfElse();
    ie.go(argv);//为什么是调用的函数是argv?? 
    ……
      

  3.   

    帮你改了一下public class IfElse {
    public static void main(String argv[]) {
    IfElse ie = new IfElse();
    //mian函数的argv数组是存放从空值台传的参数的数组
    //你可以java IfElse true看看
    ie.go(argv);// 为什么是调用的函数是argv??
    } public void go(String[] sa) {
    // 在这里可以先做一下判断,如果数组里有元素再进行下一步判断,还要看书啊,呵呵
    if (sa.length > 0) {
    String s = sa[0];
    if (s.equals("true")) {
    System.out.println("OK");
    } else if (s.equals("false")) {
    System.out.println("Not OK");
    } else {
    System.out.println("Invalid command parameter");
    }
    }
    }
    }