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

关于一道简单的java基础题的疑惑
当在命令行输入:java myprog good morning 运行以下代码,输出结果是( )。
public class myprog{
  public static void main(String argv[])
  {
System.out.println(argv[2]);
  }
}
A. myprog
B. good  
C. morning
D. Exception raised: "java.lang.ArrayIndexOutOfBoundsException: 2"  

此题的答案为什么不是C而是D呢?

------解决方案--------------------
数组的下标是从0开始的
------解决方案--------------------
argv数组的长度是2,即argv[0]="good",argv[1]="morning", argv[2]就数组越界了。
------解决方案--------------------
答案必须是D
java myprog good morning

args.length == 2 ;
args[0] = "good";
args[1] = "morning";

java 的数组下标是从0开始 和c++一样 
而你使用 args[2] 当然要报数据越界啦

------解决方案--------------------
数组下标是0开始,这里数组的长度是2。所以只有
args[0],args[1]
------解决方案--------------------
argv数组的实际长度是2,下标从0开始计,即argv[0]="good",argv[1]="morning", 没有argv[2],所以提示数组越界。
------解决方案--------------------
数组的边界问题
------解决方案--------------------
java myprog good morning
首先 java myprog 这两个词 是为了运行你的java程序。这个知道吧
然后空格, 后面可以参数,就是args这个数组里的参数。
args.length == 2 ;
args[0] = "good";
args[1] = "morning";

所以不能使用args[2]