有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中数组越界异常的获取

嘿,伙计们,我不知道如何修复下面的代码,因为我每次运行时都会出现区域越界异常。如果能帮助修复这个thx,我将不胜感激

int numberStudents = numberOfStudents();  
    System.out.println("");
    int[] gradeOfStudent = gradeOfStudents(numberStudents);

方法如下

public static int[] gradeOfStudents(int numberStudents) {
    Scanner input = new Scanner (System.in);
    int[] grades = new int [numberStudents];
    String[] name = new String[numberStudents];
    for(int i = 0; i < numberStudents;) {
        for(int j = 0; j < numberStudents; i++ ) {
            System.out.print("Enter the name of the " + (i + 1) + " student: ");
        name[i] = input.next();
            System.out.print("Enter the " + (i + 1) + " student's grade: " );
        grades[i] = input.nextInt();              
        }
    } 
    return grades;
}

共 (2) 个答案

  1. # 1 楼答案

    在学生成绩(int)方法中有第二个循环:

    for(int j = 0; j < numberStudents; i++ ) {
    

    正如您所见,循环变量是'j',但它会在每个循环后更新'i',因此i<;numberStudents签入第一个循环不再为每个“i”调用->;这可能是不允许的

    你似乎也没有用“j”来表示任何东西,整个循环可能是多余的

  2. # 2 楼答案

    移除j for循环,并将i++(增量i)添加到第一个for循环中

    public static int[] gradeOfStudents(int numberStudents) {
    Scanner input = new Scanner (System.in);
    int[] grades = new int [numberStudents];
    String[] name = new String[numberStudents];
    for(int i = 0; i < numberStudents; i++) {
        System.out.println("Enter the name of the " + (i + 1) + " student: ");
        name[i] = input.next();
        System.out.println("Enter the " + (i + 1) + " student's grade: " );
        grades[i] = input.nextInt();              
    } 
    return grades;
    

    }