You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手求助:for循环内if语句处理及循环终止方式选择

Java循环调试与退出方式选择解答

一、循环逻辑的调试修正

你的代码里输入999终止循环的逻辑存在几个问题,会导致成绩统计结果错误:

  • 输入999时,代码先把999加到了total里再执行break,这会让总分包含无效的999值
  • 不管是否提前终止循环,你都用固定的10作为平均分的分母,实际输入科目数不足10时,结果会严重偏差
  • 第二个计算sum的循环遍历了整个长度为10的数组,未输入的科目默认值是0,加上之前存入的999,会让average结果完全错误

修正后的核心逻辑应该是:先判断输入值是否为999,若是则直接退出循环,不把999计入总分和数组;同时记录实际输入的有效科目数量,用这个数量计算平均分。

二、break退出循环 vs 直接退出程序

用break退出循环更合适。

  • 直接调用System.exit(0)会立刻终止整个程序,后续的成绩统计、等级转换逻辑都无法执行,不符合你“输入999停止输入,但要计算已输入成绩”的需求
  • break只是跳出当前的输入循环,程序可以继续执行后续的统计逻辑,完美匹配你的场景。只有当你需要输入999就直接结束整个程序(不需要任何统计)时,才考虑用System.exit(0)

修正后的完整代码

package java_1.java;
import java.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {
        int marks[] = new int[10];
        int i;
        float total = 0, avg;
        Scanner scanner = new Scanner(System.in);
        final int TERMINATE = 999; // 用常量定义终止符,代码更易读
        int subjectCount = 0; // 记录实际输入的有效科目数量

        for(i = 0; i < 10; i++) {
            System.out.print("Enter Marks of Subject " + (i+1) + ": ");
            int input = scanner.nextInt();
            
            if(input == TERMINATE) {
                break; // 输入终止符,直接退出循环,不处理该值
            }
            
            marks[i] = input;
            total += input;
            subjectCount++; // 有效科目数加1
        }
        scanner.close();

        // 只有输入了有效成绩才进行统计计算
        if(subjectCount > 0) {
            avg = total / subjectCount;
            System.out.println("Average student grade out of the scores is: " + avg);
            
            if(avg >= 80) {
                System.out.println("Grade: A");
            } else if(avg >= 60 && avg < 80) {
                System.out.println("Grade: B");
            } else if(avg >= 40 && avg < 60) {
                System.out.println("Grade: C");
            } else {
                System.out.println("Grade: D");
            }
        } else {
            System.out.println("No valid marks entered.");
        }
    }
}

内容的提问来源于stack exchange,提问作者Jamie Morrissey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:49