Java如何实现带条件的无效数字提示及成绩输入重输逻辑?
问题根因
- 原有代码的外层
for循环控制变量i每次循环都会自动自增,校验失败后的continue仅能跳过当前循环剩余逻辑,无法阻止i自增,因此会直接进入下一名学生的输入流程 - 求和方法
theSumOfGrade存在变量名错误:定义的累加变量是sumGrade,但实际累加时用的是未定义的sumOfGrade,运行时会直接报错
修复后代码
// 修复求和方法的变量名错误,删除无用入参grade public static int theSumOfGrade(int[] newArray) { int sumGrade = 0; for(int i = 0; i < newArray.length; i++) { sumGrade += newArray[i]; } return sumGrade; } public static int[] getNumberOfStudentsArray(Scanner input) { System.out.printf("Enter number of students: "); int numberOfStudents= input.nextInt(); int studentGrades[] = new int[numberOfStudents]; for (int i = 0; i < numberOfStudents; i++) { boolean validGrade = false; // 给单个学生的输入加循环,校验不通过就一直重输 while (!validGrade) { System.out.println("Enter the grade for student " + (i+1) + ":" ); int grade = input.nextInt(); if (grade < 0 || grade > 100) { System.out.println("Invalid grade, try again..."); } else { studentGrades[i] = grade; validGrade = true; } } } return studentGrades; }
关键修改说明
- 给每个学生的输入逻辑新增了
while循环,只有输入的成绩合法才会退出当前循环,进入下一名学生的输入流程 - 修复了求和方法的变量名错误,同时删除了原方法中没用的
grade入参 - 去掉了原代码中无效的
continue逻辑,通过合法标记控制输入流程
内容的提问来源于stack exchange,提问作者SonnNguyenn
相关产品推荐
相关产品推荐

