2016-10-09 117 views
0

所以我有一個程序可以計算出年級平均值,最高年級,最低年級和沒有最低年級的平均值。因此,對於我的方法,確定沒有最低年級的新平均分數,我想使用該方法中已經找到的最低分數。將變量從一種方法發送到另一種

/** 
* lowestGrade() - method will return lowest grade 
* @return lowGrade 
*/ 
public static double lowestGrade(double[] grades) { 

    double lowGrade = 100.0; 

    // for loop that goes through grades array and stores 
    // first grade found as highest grade 
    for (int i = 0; i < grades.length; i++) { 

     // if statement will determine true lowest grade 
     if (grades[i] < lowGrade) { 
      lowGrade = grades[i]; 
     } 
    } 

    // Output 
    return lowGrade; 
} 

/** 
* averageWOLowGrade() - method will calculate average without lowest grade 
* @return newAverage 
*/ 
public static void averageWOLowGrade(double[] grades) { 
    double newAverage = 0; 
} 
+1

Store中的最低等級在一個領域? – beatngu13

+0

如果數組中有兩個(或更多)值等於最低值,該怎麼辦?你只是排除其中的一個,還是全部?例如。輸入爲'2,5,2,8,2',實際平均值爲'3.8'。您是否排除了其中的一個,例如'average =(5 + 2 + 8 + 2)/ 4 = 4.25',或者你排除了所有的2,例如'平均值=(5 + 8)/ 2 = 6.5'? – Andreas

+0

如果您的問題已解決,請接受最佳答案。如果不是,請嘗試編輯該問題以儘可能地改進它。 – beatngu13

回答

0

如前所述before,你可以存儲在字段中的最低等級:記住

private static double min = 0.0; 

public static double lowestGrade(double[] grades) { 
    // Set min and return its value. 
    return min = DoubleStream.of(grades).min().getAsDouble(); 
} 

public static double averageWOLowGrade(double[] grades) { 
    return DoubleStream.of(grades).filter(x -> x != min) 
            .average() 
            .getAsDouble(); 
} 

熊是的執行順序的問題在這裏。我寧願計算兩次值,而不是在一個靜態變量中管理狀態。甚至更好:計算所有結果在一次運行:

public static Stats computeStats(double[] grades) { 
    double min, max; 
    min = max = grades[0]; 
    double sum = 0.0; 

    for (double grade : grades) { 
     if (grade < min) { 
      min = grade; 
     } else if (grade > max) { 
      max = grade; 
     } 
     sum += grade; 
    } 

    double avg = sum/grades.length; 
    int len = 0; 
    sum = 0.0; 

    for (double grade : grades) { 
     if (grade != min) { 
      sum += grade; 
      len++; 
     } 
    } 

    return new Stats(min, max, avg, sum/len); 
} 

static class Stats { 
    public final double min; 
    public final double max; 
    public final double avg; 
    public final double avgWithoutMin; 

    Stats(double min, double max, double avg, double avgWithoutMin) { 
     this.min = min; 
     this.max = max; 
     this.avg = avg; 
     this.avgWithoutMin = avgWithoutMin; 
    } 
} 
+0

沒有解釋的代碼不是那麼有用。 – Andreas

+0

@Andreas確實,修正了它。 – beatngu13

相關問題