while(true) {
int value = readInt();
int i = n++; // 錯誤:每次迴圈重新宣告 i,且 n++ 先給 i 再遞增,導致 i 永遠為 0
sum += value;
ave = sum / i; // 除以 0 拋出 ArithmeticException
if(value == sentinel) break;
}
int i = n++; 放在迴圈內部,每次迭代都重新初始化 i 為 n 的舊值(初始 0),導致除以零。n++ 是後置遞增,i 拿到的是遞增前的值。int sum = 0;
int count = 0;
while(true) {
int value = readInt();
if(value == sentinel) break;
sum += value;
count++;
}
double ave = (count > 0) ? (double)sum / count : 0;
println("The average is " + ave);
count 應在迴圈外部宣告並累加。double 儲存平均值以保留小數。