为什么我的程序有越界异常? import java.util.Scanner; 公务舱中层{ 扫描仪扫描=新扫描仪(System.in); 国际学生; int arr[][]=新int[学生][5]; 字符串str[]={“科学”、“数学”、“英语”}; 公开无效分数(){ System.out.println(“多少学生?”); student=scan.nextInt(); 对于(int i=0;i

为什么我的程序有越界异常? import java.util.Scanner; 公务舱中层{ 扫描仪扫描=新扫描仪(System.in); 国际学生; int arr[][]=新int[学生][5]; 字符串str[]={“科学”、“数学”、“英语”}; 公开无效分数(){ System.out.println(“多少学生?”); student=scan.nextInt(); 对于(int i=0;i,java,Java,实际上,在arr中使用student之前,您没有为student赋值,因此默认情况下,java将student的值赋值为0 要解决此问题,您只需在初始化arr之前输入“多少学生?”即可,如下所示: import java.util.Scanner; public class Mid { Scanner scan = new Scanner(System.in); int student; int arr [][]=new int[student][5]; Str

实际上,在
arr
中使用
student
之前,您没有为
student
赋值,因此默认情况下,java将
student
的值赋值为0

要解决此问题,您只需在初始化
arr
之前输入“多少学生?”即可,如下所示:

import java.util.Scanner;

public class Mid {
    Scanner scan = new Scanner(System.in);
    int student;
    int arr [][]=new int[student][5];
    String str[]= {"science","math","english"};
    
    public void score() {
        System.out.println("how many student?");
        student=scan.nextInt();
        
        for(int i=0;i<student; i++) {
            for(int j=0;j<3;j++) {
                System.out.println("input"+(i+1)+"student "+str[j]+"score");
                arr[i][j]=scan.nextInt();
                }
        }
    }
import java.util.Scanner;
公务舱中层{
扫描仪扫描=新扫描仪(System.in);
国际学生;
System.out.println(“多少学生?”);
student=scan.nextInt();
int arr[][]=新int[学生][5];
字符串str[]={“科学”、“数学”、“英语”};
公开无效分数(){

对于(int i=0;i您分配一个数组,然后询问用户该数组需要有多大。这需要以相反的顺序进行考虑如果
studunt
为空会发生什么,然后尝试使用
int arr[][]=new int[student][5];
。是的,它将是一个长度为0的数组。首先定义
student
,或者移动
int arr[[]
在设置student的值之后设置。
int student=scan.nextInt();
会更好
import java.util.Scanner;

public class Mid {
    Scanner scan = new Scanner(System.in);
    int student;
    System.out.println("how many student?");
    student=scan.nextInt();
    int arr [][]=new int[student][5];
    String str[]= {"science","math","english"};

public void score() {
    
    for(int i=0;i<student; i++) {
        for(int j=0;j<3;j++) {
            System.out.println("input"+(i+1)+"student "+str[j]+"score");
            arr[i][j]=scan.nextInt();
            }
    }
}