我是编程的新手,在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])
答案 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