日期:2014-05-20  浏览次数:20849 次

求指教scjp练习
public class E07_ShowArgs {
  public static void main(String[] args) {
    System.out.println(args[0]);
    System.out.println(args[1]);
    System.out.println(args[2]);
  }

和public class E07_ShowArgs2 {
  public static void main(String[] args) {
    if(args.length < 3) {
      System.out.println("Need 3 arguments");
      System.exit(1);
    }
    System.out.println(args[0]);
    System.out.println(args[1]);
    System.out.println(args[2]);
  }
}这两个的区别是什么,都能编译成功,第一个运行显示“Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0”,第二个运行显示Need 3arguments求大神指教。谢了
------解决方案--------------------
那是因为你在运行时提供的参数少了.
------解决方案--------------------
参数String[] args可以理解为一个字符串数组
数组下标0代表第一个参数
数组下标1代表第二个参数
以此类推

前面的写法,没有考虑运行时刻没有参数的情况
也就是说:
java E07_ShowArgs arg1 arg2 arg3这么执行应该能正常打印出参数来
java E07_ShowArgs这么执行,由于参数是空的,所以会抛出异常

后面的写法,先判断了数组里面存放数据的个数
当然相对就安全一些了