学习前提

能够用JDK编译运行Main.java;理解变量和输出语句。

本课完成后你能做什么

识别整数除法、字符串比较和循环边界。

先理解机制

int适合本例的小整数;除法两侧都是整数时先做整数除法,因此5/2为2。需要比例时在除法发生之前转换为double,事后转换无法恢复小数。

字符串内容用equals比较。==比较引用是否指向同一对象,不应靠字符串常量复用造成的偶然结果判断内容。常量放左侧的"Java".equals(value)也能安全处理null。

先用条件排除非法分数,再累计有效数据。continue跳过当前轮,for的下一轮仍会执行。平均值必须处理有效数量为零的情况。

可运行示例

使用JDK 21。将代码保存为Main.java,在独立练习目录执行 javac -encoding UTF-8 Main.java,再执行 java Main。每章独立运行,不把多个public Main类放进同一文件。


public class Main {
    public static void main(String[] args) {
        int[] scores = {60, 90, -1, 100};
        int sum = 0, count = 0;
        for (int score : scores) {
            if (score < 0 || score > 100) continue;
            sum += score;
            count++;
        }
        System.out.println(5 / 2);
        System.out.println((double) 5 / 2);
        System.out.println("Java".equals(new String("Java")));
        System.out.println(count == 0 ? "no scores" : "sum=" + sum);
    }
}

推演与验证

有效分数为60、90、100,总分250;-1不进入累计。前两行分别是2与2.5。

常见错误与边界

整数可能溢出;这里的小样本不构成大规模统计方案。数组下标范围是0到length-1。

动手练习

计算有效平均分,并测试空数组。

参考解法与理由

先判断count==0,否则使用(double)sum/count。本例约为83.333;空数组输出no scores,不能直接除以零。

进一步阅读