public class sum {
public static void main(String[] args) {
int n= Integer.parseInt(args[0]);
int sum=0;
int i=1;
while(i<=n){
sum=sum+i;
i++;
}
System.out.println("n="+n+"sum="+sum);
}
}以上是求和代码,Eclipse下运行,出现
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at sum.main(sum.java:9)
这是什么问题
int n=Integer.parseInt(args[0]);这句代码书上说是有一个n的输入,是什么意思?
我初学JAVA,希望各位大虾多多指点~谢了~

解决方案 »

  1.   

    下标越界,毫无疑问是在int n= Integer.parseInt(args[0]);这个地方的args[0]这个了。
    因为你这里只有这一个地方使用了数组。运行的时候要带参数,你如果直接在eclipse里面默认情况下运行,肯定是没有参数的,所以要设置参数才可以。
      

  2.   

    哥们你怎么同一个问题发这么多贴。。 
    public class Test{ 
    public static void main(String[] args){ 
    sum.main(new String[]{"2"})//new String[]{"3","a"},只要传一个String类型的数组且这个数组至少有一个元素,还有第一个元素必须是个正整数 

    }
      

  3.   

    在控制台运行时,假设你的n是12那么你应该这么运行java sum 12
    后面的这个12是你传进去的参数,而用ECLIPSE默认是没有参数的,至于在ECLIPSE里怎么传参数,很简单的,自己查下
    你没有传参数,那么public static void main(String[] args)这里的args这个数组就是空的,而你要访问args[0]数组下标就越界了,因为你的数组长度为零args[0]里根本没有东西
      

  4.   

    楼上都说了很多了,都对的public static void main(String[] args) 其中  String[] args 这个数组就是运行时输入的参数以空格区分
    >java sum 0 1 2
    那么有三个参数
    args[0] = 0
    args[1] = 1
    args[2] = 2
      

  5.   

    数组越界的问题,你运行这个程序的时候点击鼠标右键,运行之前给main函数赋值具体做法是:右键 run as
               选择 open run Dialog 会弹出一个对话框
               在对话框上选择  Arguments 
               在Program arguments 中填入你要赋给args数组赋的值
                 最后点击那个对话框上面的run按钮就行了
      

  6.   

    在DOS命令下调试就没问题了 
    args数组需要传入值