Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 初学者2D数组越界异常_Java_Arrays_Multidimensional Array_Indexoutofboundsexception_Jcreator - Fatal编程技术网

Java 初学者2D数组越界异常

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

我在试图找出如何实现第二个数组来计算我的分数程序的平均值时遇到了一些困难。 我使用1个2D数组来存储每个学生在每次作业中收到的分数 (5名学生,4份作业)。 我已经设法让学生的平均数数组工作,但当我去计算每个单独的作业分数时(总共5名学生/5名学生)。我一直得到一个Indexoutofbounds异常,我对2d Aray非常陌生,并且仍在努力找出如何正确阅读它们。 这是我的密码:

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);
    }

}