尝试以列主要形式填充二维数组时线程主错误中出现异常 java

Exception in thread main error when trying to fill in a 2D array in column major form java

代码:

import java.util.*;

public class lab3  {
    public static void getScores(int[][] matrix) { 
        Scanner kb = new Scanner(System.in);
        int r, c;
        for (c = 0; c < matrix[0].length; c++){
           for (r = 0; r < matrix.length; r++) 
               System.out.println("enter scores for test "+(c+1)+ " and student "+(r+1));
            matrix[r][c] = kb.nextInt(); 
        } 
        kb.close();
    }
    public static void printArray(int[][] matrix) { 
        for (int c = 0; c < matrix[0].length; c++)
            for (int r = 0; r < matrix.length; r++){ 
                System.out.printf("%5d", matrix[r][c]); 
                System.out.println(); 
            } 
        }
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        System.out.println("how many students are there?");
        int students=kb.nextInt();
        System.out.println("How many tests are there?");
        int tests=kb.nextInt();
        int [][] grades= new int [students][tests+1];

        getScores(grades); 
        printArray(grades);

我觉得我很接近,但我总是收到错误。在列主要形式中填充数组是主要处理所以 "get scores" 方法和底部声明的数组是我认为我的问题所在请帮助我

在您的 getScores 方法中,内部 for 循环第一个 r 作为计数器缺少大括号,正确的代码应该是正确的,如果我正确地理解了您想要做的事情,

   for (r = 0; r < matrix.length; r++) {
    System.out.println("enter scores for test "+(c+1)+ " and student "+(r+1));
    matrix[r][c] = kb.nextInt();
   }

此外,我的理解是在这行代码中它应该只是 tests 而不是 tests + 1

int [][] grades= new int [students][tests+1];

而且,大多数情况下,当您指定在哪一行收到什么异常时,最好回答您的查询,因此 SO 中的用户不必实际执行您的代码来查看您面临的问题。

希望对您有所帮助!!