Java 计算平均成绩,程序不断出错

Java 计算平均成绩,程序不断出错,java,arrays,Java,Arrays,我的工作是计算分数和最终加权平均分数,并将它们输出到一个表中。我很难做到这一点,因为我不断得到一个超出边界的数组,其中显示: examAverage[index] = ...etc 我的MAX_学生人数是200,因为这是我的程序中可以存储成绩的学生人数最多的一次。请帮助我找出需要更改哪些变量才能使该程序正常工作。如果我需要提供更多信息,请告诉我。以下是我的代码的其余部分: if (choice == 2) { //Index counters for averages

我的工作是计算分数和最终加权平均分数,并将它们输出到一个表中。我很难做到这一点,因为我不断得到一个超出边界的数组,其中显示:

examAverage[index] = ...etc
我的MAX_学生人数是200,因为这是我的程序中可以存储成绩的学生人数最多的一次。请帮助我找出需要更改哪些变量才能使该程序正常工作。如果我需要提供更多信息,请告诉我。以下是我的代码的其余部分:

if (choice == 2) {

            //Index counters for averages
            int examIndex = 0;
            int quizIndex = 0;
            int hwIndex = 0;
            int gradeAveragingIndex = 0;

            //loop finding the gradeAverage
            for(int index = 0; index<=MAX_STUDENTS; index++){
                examAverage[index] = (exams[examIndex] + exams[examIndex+1] + exams[examIndex+2]) / numExams;
                quizAverage[index] = (quizzes[quizIndex] + quizzes[quizIndex+1] + quizzes[quizIndex+2]) / numQuizzes;
                hwAverage[index] = (hw[hwIndex] + hw[hwIndex+1] + hw[hwIndex+2]) / numHW;
                gradeAverage[index] = ((examAverage[gradeAveragingIndex] * examWeight) + (quizAverage[gradeAveragingIndex] * quizWeight) + (hwAverage[gradeAveragingIndex] * hwWeight) / numExams);

                examIndex+=3;
                quizIndex+=3;
                hwIndex+=3;
                gradeAveragingIndex++;

            }

            System.out.println("Display student grades & statistics");

            //Formatting for the heading of my grade table
            System.out.printf("%-10s","Name");
            System.out.printf("%-5s","Exam");
            System.out.printf("%-5s","Exam");
            System.out.printf("%-5s","Exam");
            System.out.printf("%-5s","Quiz");
            System.out.printf("%-5s","Quiz");
            System.out.printf("%-5s","Quiz");
            System.out.printf("%-7s","HWork");
            System.out.printf("%-7s","HWork");
            System.out.printf("%-7s","HWork");
            System.out.printf("%-5s","Grade\n");

            //declaring index counters
            int studentNameIndex = 0;
            int examGradeIndex = 0;
            int quizGradeIndex = 0;
            int homeworkGradeIndex = 0;
            int gradeAverageIndex = 0;

            //for loop for the output of exams, quizzes, homework, and grade average
            for(int index = 0; index < studentNames.length; index++) {
                System.out.printf("%-10s",studentNames[studentNameIndex]);
                System.out.printf("%-5.1f",exams[examGradeIndex]);
                System.out.printf("%-5.1f",exams[examGradeIndex+1]);
                System.out.printf("%-5.1f",exams[examGradeIndex+2]);
                System.out.printf("%-5.1f",quizzes[quizGradeIndex]);
                System.out.printf("%-5.1f",quizzes[quizGradeIndex+1]);
                System.out.printf("%-5.1f",quizzes[quizGradeIndex+2]);
                System.out.printf("%-7.1f",hw[homeworkGradeIndex]);
                System.out.printf("%-7.1f",hw[homeworkGradeIndex+1]);
                System.out.printf("%-7.1f",hw[homeworkGradeIndex+2]);
                System.out.printf("%-5.1f",gradeAverage[gradeAverageIndex] + "\n");

                studentNameIndex++;
                examGradeIndex+=3;
                quizGradeIndex+=3;
                homeworkGradeIndex+=3;
                gradeAverageIndex++;
            }

                }
if(选项==2){
//平均指数计数器
int-examidex=0;
int-quizIndex=0;
指数=0;
int-gradeAveraginIndex=0;
//循环查找平均值
对于(int index=0;index这一行:

for(int index = 0; index<=MAX_STUDENTS; index++){

用于(int index=0;index数组的大小是多少?
examAverage
Post您的stacktrace,并告诉您搜索到的关于该错误的信息以及从中了解到的信息it@Reddy,你和我都知道堆栈跟踪除了第一行上的ArrayOutOfBoundsException之外不会说任何有用的东西,每隔一行对这个程序都是无用的。它只是将他指向错误发生的那一行。我相信他知道那是哪一行。@Daniel,通过谷歌搜索“通常导致数组索引超出边界的概念”可能会更快地发现这个错误@August,我的考试平均数组是200。嘿,Matthew,谢谢你的帮助。我更改了这个数组,但现在我在下一行代码
examAverage[index]=(考试[examidex]+考试[examidex+1]+考试[examidex+2])中得到了一个超出范围的索引/numExams;
这是因为在循环中,你一直到最后一个索引,然后尝试访问它之后的两个索引。你在for循环中的条件应该改变如下:“for(int index=0;index+2for(int index = 0; index<MAX_STUDENTS; index++){