如何在Java成绩录入for循环中输入999时终止程序?
解决输入999终止测验分数统计的问题
你的问题核心是输入999后没及时拦截,导致无效值被存入数组、算进总分,进而后续计算出错。只需要在输入分数后立刻判断是否为终止信号,调整逻辑即可。
修正后的完整代码
import java.util.Scanner; public class GradeCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int[] grade = new int[10]; // 最多存10个分数 int gradeTotal = 0; int i; for (i = 0; i < 10; i++) { System.out.print("Enter grade " + (i + 1) + " or enter 999 to quit: "); grade[i] = scanner.nextInt(); // 先判断是否是终止信号,是的话直接跳出循环 if (grade[i] == 999) { break; } // 只有有效分数才加到总分里 gradeTotal = gradeTotal + grade[i]; } // 计算有效分数的数量:如果提前终止,有效个数是i;如果满10个,就是10 int validCount = i; if (validCount == 0) { System.out.println("没有输入任何有效分数"); scanner.close(); return; } // 计算平均分 double average = (double) gradeTotal / validCount; System.out.println("平均分: " + average); // 判断字母等级(可根据需求调整分数区间) char letterGrade; if (average >= 90) { letterGrade = 'A'; } else if (average >= 80) { letterGrade = 'B'; } else if (average >= 70) { letterGrade = 'C'; } else if (average >= 60) { letterGrade = 'D'; } else { letterGrade = 'F'; } System.out.println("字母等级: " + letterGrade); scanner.close(); } }
关键修改说明
- 提前判断终止信号:输入分数后立刻检查是否为999,一旦触发就用
break终止循环,避免无效值进入总分计算 - 区分有效分数:只有当输入不是999时,才将分数累加到
gradeTotal中 - 处理有效分数数量:循环结束后,
i的值就是实际输入的有效分数个数(比如输入3个分数后输999,i的值是3),用这个数计算平均分才准确 - 边界情况处理:如果用户一开始就输入999,直接提示没有有效分数,避免除以0的错误
内容的提问来源于stack exchange,提问作者ilikecompooters
相关产品推荐
相关产品推荐

