学习前提
能够用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,不能直接除以零。