首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 陣列求平均、最大、最小值完整範例

     編輯:Java 相關知識

需求場景

給定一組學生的 Java 成績,計算平均分、最高分與最低分。本文提供修正後的完整代碼,修復原邏輯中的平均值計算錯誤與極值判斷缺陷。

實體類:Student

public class Student {
    private String name;
    private int age;
    private int sno;
    private int javaScore;

    public Student(String name, int age, int sno, int javaScore) {
        this.name = name;
        this.age = age;
        this.sno = sno;
        this.javaScore = javaScore;
    }

    public int getJavaScore() { return javaScore; }
    public String getName() { return name; }
    
    @Override
    public String toString() {
        return "我叫" + name + ",今年" + age + "歲,Java成績:" + javaScore;
    }
}

統計邏輯實現

public class ScoreStatistics {
    public static void main(String[] args) {
        Student[] students = {
            new Student("聲張", 2, 4, 34),
            new Student("劉禅", 3, 2, 24),
            new Student("張燕", 4, 23, 78),
            new Student("周少博", 32, 23, 99),
            new Student("張旭", 24, 13, 100)
        };
        
        // 提取成績陣列
        int[] scores = new int[students.length];
        for (int i = 0; i < students.length; i++) {
            scores[i] = students[i].getJavaScore();
        }
        
        // 初始化極值
        int max = scores[0];
        int min = scores[0];
        long sum = 0; // 用 long 避免溢位
        
        for (int score : scores) {
            sum += score;
            if (score > max) max = score;
            if (score < min) min = score;
        }
        
        double average = (double) sum / scores.length;
        
        System.out.printf("Java成績統計:平均分=%.2f,最高分=%d,最低分=%d%n", 
                          average, max, min);
    }
}

關鍵修正點

原代碼問題修正方案
平均值計算 s += w[i]/5 導致整數除法精度丟失先累加總和 sum += score,最後轉 double 除以長度
極值判斷邏輯錯亂(比較固定索引 w[0]、w[2])遍歷陣列,動態更新 max、min
硬編碼陣列長度 5使用 students.length 動態獲取

執行輸出

Java成績統計:平均分=67.00,最高分=100,最低分=24

進階擴展:使用 Stream API (Java 8+)

IntSummaryStatistics stats = Arrays.stream(scores).summaryStatistics();
double avg = stats.getAverage();
int max = stats.getMax();
int min = stats.getMin();

總結

統計陣列極值與平均值的核心是單次遍歷累加總和、動態更新極值。注意整數除法精度問題,必要時轉為浮點數運算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved