Java 初学者2D数组越界异常
我在试图找出如何实现第二个数组来计算我的分数程序的平均值时遇到了一些困难。 我使用1个2D数组来存储每个学生在每次作业中收到的分数 (5名学生,4份作业)。 我已经设法让学生的平均数数组工作,但当我去计算每个单独的作业分数时(总共5名学生/5名学生)。我一直得到一个Indexoutofbounds异常,我对2d Aray非常陌生,并且仍在努力找出如何正确阅读它们。 这是我的密码:Java 初学者2D数组越界异常,java,arrays,multidimensional-array,indexoutofboundsexception,jcreator,Java,Arrays,Multidimensional Array,Indexoutofboundsexception,Jcreator,我在试图找出如何实现第二个数组来计算我的分数程序的平均值时遇到了一些困难。 我使用1个2D数组来存储每个学生在每次作业中收到的分数 (5名学生,4份作业)。 我已经设法让学生的平均数数组工作,但当我去计算每个单独的作业分数时(总共5名学生/5名学生)。我一直得到一个Indexoutofbounds异常,我对2d Aray非常陌生,并且仍在努力找出如何正确阅读它们。 这是我的密码: import java.util.Scanner; public class Marks { private Str
import java.util.Scanner;
public class Marks
{
private String[] names;
private int[][] assignments;
private double[] stuAvgArray;
private double[] assignAvgArray;
public Marks()
{
names = new String[5];
assignments = new int[5][4];
stuAvgArray = new double[5];
assignAvgArray = new double[4];
}
public void getInput()
{
Scanner input = new Scanner(System.in);
System.out.println("Enter 5 student names: ");
for(int i = 0; i < names.length; i++)
names[i] = input.nextLine();
for(int row = 0; row < assignments.length; row++)
{
System.out.println("Enter the 4 marks for: " + names[row]);
for(int col = 0; col < assignments[row].length; col++)
{
assignments[row][col] = input.nextInt();
stuAvgArray[row] += assignments[row][col];
}
stuAvgArray[row] = (stuAvgArray[row]/4);
}
for (int col = 0; col < assignments.length; col++)
{
for(int row = 0; row < assignments[col].length; row++)
我已经计算了行平均值,但粗体的列平均值让我感到悲伤以下行是错误的:
for(int row = 0; row < assignments[col].length; col++)
但恐怕这不是唯一的问题。根据您读取输入的方式,assignments
是一个二维数组,第一个维度的行号和第二个维度的列号。但是,您在这里混合了维度。作为提醒,您的代码是:
for (int col = 0; col < assignments.length; col++)
{
for (int row = 0; row < assignments[col].length; row++) {
assignAvgArray[row] += assignments[row][col];
}
assignAvgArray[col] = (assignAvgArray[col]/5);
}
for(int col=0;col
赋值。长度为5,因此列可以变为4。
assignAvgArray.length为4。当您给出aassignAvgArray col=4时,它将抛出arrayoutofboundException。
修复它,如果在我的答案下仍然有错误注释。Hi there maxime,感谢您捕捉到该错误,但我仍然得到绑定错误,我认为这与数组长度的差异有关。不过不确定
for(int row = 0; row < assignments[col].length; col++)
for(int row = 0; row < assignments[col].length; row++)
for (int col = 0; col < assignments.length; col++)
{
for (int row = 0; row < assignments[col].length; row++) {
assignAvgArray[row] += assignments[row][col];
}
assignAvgArray[col] = (assignAvgArray[col]/5);
}
for (int col = 0; col < assignments[0].length; col++)
{
for (int row = 0; row < assignments.length; row++) {
assignAvgArray[row] += assignments[row][col];
}
assignAvgArray[col] = (assignAvgArray[col]/5);
}
for (int col = 0; col < assignments.length; col++)
{
for(int row = 0; row < assignments[col].length; row++)
assignAvgArray[row] += assignments[row][col];
assignAvgArray[col] = (assignAvgArray[col]/5);
}
}