线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常

时间:2011-03-03 03:39:30

标签: java arrays exception

我是编程的新手,在eclipse中运行一些新代码时,我遇到了这个错误而且完全迷失了。

import java.util.Scanner;

public class Lab6
{
    public static void main(String[] args)
    {
        // Fill in the body according to the following comments
    Scanner in= new Scanner(System.in); 
        // Input file name
        String FileName=getFileName(in);
        // Input number of students
        int numOfStudents = FileIOHelper.getNumberOfStudents(FileName);
        Student students[] = getStudents(numOfStudents); 
        // Input all student records and create Student array and
        // integer array for total scores
        int[]totalScores = new int[students.length];
        for(int i=0; i< students.length; i++)
        {
            for(int j=1; j<4; j++)
            {
                totalScores[i]= totalScores[i]+students[i].getScore(j);
            }
        }
        // Compute total scores and find students with lowest and
        // highest total score
        int i;
        int maxIndex =0;
        int minIndex =0;
        for(i=0; i<students.length; i++);
        {
            if(totalScores[i]>=totalScores[maxIndex])
            {
                maxIndex=i;
            }
            else if(totalScores[i]<=totalScores[minIndex])
            {
                minIndex=i;
            }
        }

问题似乎在 if(totalScores [i]&gt; = totalScores [maxIndex])

2 个答案:

答案 0 :(得分:5)

您的上一次;之后有一个for,因此在for执行后,每个步骤中没有其他命令,变量i将具有值{{ 1}}在数组的边界之外。然后,for后面的students.length块将以{ ... }的最终值执行一次,从而导致异常。

删除i,它应该有效。

答案 1 :(得分:0)

这方面的问题

int [] totalScores = new int [students.length];

for(int i = 0; i&lt; students.length; i ++)         {             for(int j = 1; j <4; j ++)             {                 totalScores [i] = totalScores [i] + students [i] .getScore(j);             }         }

你为totalscore分配了students.length大小..但是你正在使用4 * students.length ..所以arrayindex超出了界限。使用这个

int [] totalScores = new int [4 * students.length];

感谢 arefin