不理解 这么用不可以吗?

问题遇到的现象和发生背景

img

用代码块功能插入代码,请勿粘贴截图
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[][] grades = new int[2][];
        int count = 0;
        for (int i=0;i<3;i++){
            System.out.println("请输入第"+(i+1)+"个班级的成绩");
            int total =0;
            for (int j = 0; j < 4; j++) {
                System.out.print("第"+(j+1)+"个学员的成绩:");
                grades[i][j]=sc.nextInt();
                if (grades[i][j]>85){
                    count++;
                }
                total += grades[i][j];
            }
            double avg = total/grades[i].length;
            System.out.println("第"+(i+1)+"个班级参赛学院的平均分是:"+avg+"\n");
        }
        System.out.println("成绩85分以上的学员人数为:"+count);

    }

运行结果及报错内容

img

你只初始化了2行,没有列呀
你要在循环里先给列初始化,才能给列赋值
这明显越界了

grades[i][j]=sc.nextInt(); 这里空指针了。还有你new的数组size是2,你循环是<3,你改完这个问题后面还会有个数组越界。
java 中不建议使用二元数组,你直接用两个list不好么。