Java程序,输入学生学号成绩啥的,用数组,可以生成class但不能运行

import java.util.*;
public class array
{ public static void main(String[] args)
{

int num;
int i;

Scanner scanner = new Scanner(System.in);

do{
System.out.println("请输入全班人数:");

num=scanner.nextInt();
}
while (num<=0);
int[][] grade=new int[num][2];
for(i=0;i<num;i++);
{for(int j=0;j<=1;j++)
{
switch(j) {
case 0:
System.out.println("请输入第"+(i+1)+"位同学的学号");
break;
case 1:
System.out.println("请输入第"+(i+1)+"位同学的Java成绩");
break;
}
grade[i][j]=scanner.nextInt();
}
}
System.out.println("所有同学成绩输入完毕。");
System.out.println("各位同学的java成绩如下:");
System.out.println("序号 学号 Java成绩");
for(i=0;i<num;i++);
{
System.out.print(i+1);
for(int j=0;j<=1;j++)
{
System.out.print(" "+grade[i][j]+" ");
}
System.out.println("");
}
}
}图片说明图片说明图片说明

你这不是报出了数组下标越界的异常吗?你的数组都越界了,当然就不会运行了

首先呢,你知道你为什么一输入10,就叫你输入第11位的成绩么,是因为你的代码里第一个for循环下面有个 ; 这个分号就是第一个for的语句,所以
第一个for执行完了,此时i也就等于10le,所以叫你输入11。但是你的数组是10行3列的,最多只能是grade[9][1]所以越界。这没考虑其他方面
而且你的j为什么要小于1?问题太多,一个for就能输入完所有的成绩。

import java.util.Scanner;

public class array {
    public static void main(String[] args) {
        int num;
        int i;
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("请输入班级人数:");
            if ((num = scanner.nextInt()) > 0)
                break;
        }
        int[][] grade = new int[num][2];// 鉴于用数组,除了字符串类型是无法同时存储两个数据的(学号跟成绩),那就第一列是学号第二列是成绩吧
        for (i = 0; i < num; i++) {
            for (int j = 0; j <= 1; j++) {
                switch (j) {
                case 0:
                    System.out.println("请输入第" + (i + 1) + "位同学的学号");
                    break;
                case 1:
                    System.out.println("请输入第" + (i + 1) + "位同学的Java成绩");
                    break;
                }
                grade[i][j] = scanner.nextInt();
            }
        }
        System.out.println("所有同学成绩输入完毕。");
        System.out.println("各位同学的java成绩如下:");
        System.out.println("序号\t学号\tJava成绩");
        for (i = 0; i < num; i++) {
            System.out.print(i + 1);
            for (int j = 0; j <= 1; j++) {
                System.out.print("\t" + grade[i][j]);
            }
            System.out.println("");
        }
        scanner.close();// 记得关闭
    }
}

稍微改了下