-1

这是我的输出的问题:

Enter number of students: 3
Enter the grade for student 1:
-2
Invalid grade, try again...
Enter the grade for student 2:
-3
Invalid grade, try again...
Enter the grade for student 3:
110
Invalid grade, try again...
The average is 35.0

但在示例输出会话中如下:

Enter number of students: 3
Enter the grade for student 1:
55
Enter the grade for student 2:
108
Invalid grade, try again...
Enter the grade for student 2:
56
Enter the grade for student 3:
57
The average is 56.0

你能看到-2, the-3110没有打破循环,它一直在要求新的输入吗?而不是108在样本上显示并立即中断循环并要求用户student 2再次提示输入。

这是我的代码:

public static int theSumOfGrade(int[] newArray, int grade) {
    int sumGrade = 0;
    for(int i = 0; i < newArray.length; i++) { // for i < array length
        sumOfGrade += newArray[i];  // the sum will be added up with all the values inside the array
    }
    return sumOfGrade;
}

public static int[] getNumberOfStudentsArray(Scanner input) { // Number of students input method
    System.out.printf("Enter number of students: "); // Prompt the number of students from the user
    int numberOfStudents= input.nextInt(); // Scanner Object in with numberOfStudents variable

    int studentGrades[] = new int[numberOfStudents]; // Assign to new Array

    for (int i = 0; i < numberOfStudents; i++) {
        System.out.println("Enter the grade for student " + (i+1) + ":"  );
        studentGrades[i] = input.nextInt();
//        for (int j = 0; j < studentGrades.length; j++) {
//        }
        if (studentGrades[i] < 0 || studentGrades[i] > 100) {
            System.out.println("Invalid grade, try again");
            continue;
        }
    }
    return studentGrades;
} // end of getNumberOfStudentsArray()
4

1 回答 1

2

当输入错误时,int i不应获得增量。所以你可以这样做:

for (int i = 0; i < numberOfStudents;) { // removed increment from here
            System.out.println("Enter the grade for student " + (i+1) + ":"  );
            studentGrades[i] = input.nextInt();
            if (studentGrades[i] < 0 || studentGrades[i] > 100) {
                System.out.println("Invalid grade, try again");
                continue;
            }
            i++; // Increment only when entered value is correct
        }
于 2021-09-30T04:28:20.870 回答