首页 > 解决方案 > 在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;
}

标签: java

解决方案


您的gradeOfStudents(int) 方法中有第二个循环:

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

如您所见,循环变量是“j”,但它在每个循环后更新“i”——因此不再为每个“i”调用第一个循环中的 i < numberStudents 检查——>它可能超出范围。

您似乎也没有将 'j' 用于任何事情,整个循环可能是多余的。


推荐阅读