首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 求平均值程式邏輯錯誤分析與修正

     編輯:程式設計綜合問答

原始碼問題

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);

重點

  1. 計數器 count 應在迴圈外部宣告並累加。
  2. 平均值計算移至迴圈結束後,避免重複計算與除零錯誤。
  3. 使用 double 儲存平均值以保留小數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved