主要的Java异常错误

时间:2014-08-09 17:06:29

标签: java compiler-errors

嗨,大家好我试着制作一个普通的计算器(我现在正在学习java),一切都很好,除了一件事。 这是我的代码:

package projects;
import java.util.Scanner;

public class average {
    public static void main (String[]args){

        Scanner sc = new Scanner(System.in);

        System.out.println("/////////////////////////////////");
        System.out.println("///     Average Calculator     ///");
        System.out.println("/////////////////////////////////");
        System.out.println("How many numbers: ");
        int totalnumbers = sc.nextInt();
        int average = 0;
        int[] list;
        list = new int [totalnumbers];
        for(int X = 1 ; X <= totalnumbers ; X++){
            System.out.println("Please choose number " + X +": ");
            list[X] = sc.nextInt();
            average+=list[X];   


        }
        System.out.println("Your average is:" + (average/totalnumbers));

        sc.close();
    }

}

我无法弄清楚什么是错的,但当它应该给我平均值时,它会给我这个错误:

线程中的异常&#34; main&#34; java.lang.ArrayIndexOutOfBoundsException:5     在projects.average.main(average.java:19)

2 个答案:

答案 0 :(得分:1)

totalnumbers个数组以索引0开头,以索引totalnumbers-1结束 您的X从1迭代到totalnumbers,因此X到达totalnumbers时会出现异常。

答案 1 :(得分:1)

数组索引从0到N-1。

当您尝试使用list[X]访问x == totalnumbers时,会发生运行时异常。


改变这个:

for(int X = 1 ; X <= totalnumbers ; X++){
    System.out.println("Please choose number " + X +": ");
    list[X] = sc.nextInt();
    average+=list[X];

对此:

for(int X = 0 ; X < totalnumbers ; X++){
    System.out.println("Please choose number " + (X+1) +": ");
    list[X] = sc.nextInt();
    average+=list[X];