我编译程序时遇到错误(线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException)

时间:2015-08-29 11:11:47

标签: java

大家好我练习Java语言。我遇到了这个问题。我是这种语言的初学者。我在拼贴画中研究它。这是问题所在。

"创建一个将导出数字之和的java程序。例如,输入5将产生(1 + 2 + 3 + 4 + 5 = 15)"

我知道答案,但我试图以另一种方式解决它。

    public class Sum11 {
    static int i;

     static int[] S = new int[5];
     static int  j;
     static int Sum = 0;

    Sum11(int i,int S[],int j){
    this.S=S;
    this.i=i;
    this.j=j;

    }


    public static void main(String[] args){
        Scanner s1 = new Scanner(System.in);
        for(i=1;i<=5;i++){
            System.out.println("Enter FIve Number");
           S[i]= s1.nextInt();
        }
        for(int num : S){
            Sum = Sum+num;
        }
        System.out.println("The Result IS: "+Sum);
    }

}

4 个答案:

答案 0 :(得分:1)

java中的数组索引从0开始,所以你的输入循环应该是:

System.out.println("Enter Five Numbers");
for(i=0;i<S.length;i++) {
    S[i]= s1.nextInt();
}

答案 1 :(得分:1)

5个元素数组中数组索引S[5]的问题是一个问题。 另一个问题是我认为你误解了这个练习。

  

&#34;创建一个将导出数字之和的java程序。例如,输入5将产生(1 + 2 + 3 + 4 + 5 = 15)&#34;

它要求&#34; &#34;而不是&#34;号码 s &#34; 似乎输入是一个数字,例如数字5。

使用循环的解决方案可以是例如:

int num = scanner.nextInt();
int sum = 0;
for (int i = 1; i <= num; ++i) {
    sum += i;
}

还有一个简单公式的数学解决方案:

int num = scanner.nextInt();
int sum = num * (num + 1) / 2;

答案 2 :(得分:0)

数组S初始化为:

static int[] S = new int[5];

然后在main函数中,从1循环到5:

for(i=1;i<=5;i++){
    System.out.println("Enter FIve Number");
   S[i]= s1.nextInt();
}

尝试在索引1,2,3,4,5处设置值。 但是在Java数组中,0是基于0的, 所以这个例子中的索引应该是0,1,2,3,4。

你很容易出现这样的问题,因为S被声明并初始化到远离实际使用的地方。 而你实际上并不需要它。 你可以动态计算总和, 没有摸索阵列:

int sum = 0;
for(i=1;i<=5;i++){
    System.out.println("Enter FIve Number");
    sum += s1.nextInt();
}

答案 3 :(得分:0)

Java数组的起始索引为0。 你必须:

for(i=0;i<5;i++){