簡體   English   中英

如何使用math.max和math.min忽略高低分數

[英]How to us math.max and math.min to omit high and low scores

(這是Java)在我的方法中,我正在計算文件中給我的7分。 我必須設置一個最大值和最小值,將它們初始化,也就是我遇到問題的地方。 另外,我必須將math.max和math.min與我的總和一起使用。 如果需要更多我的程序,請詢問。 示例文件輸入為:

public static double calculateDiveScore(String diveLine) {
    Scanner diveLineSc = new Scanner(diveLine);

    int dive = diveLineSc.nextInt();
    double difficulty = diveLineSc.nextDouble();
    double sum = 0.0;
    double max = ;
    double min = ;


    for( int i = 1; i < 7; i++){
        double score = diveLineSc.nextDouble();
        max = Math.max(max,score);
        min = Math.min(min,score);
        sum +=score;

    }

    double totalScore = (sum - max - min )* difficulty * 0.6;

    return totalScore;
}

您需要按如下所示初始化變量。

double max = Double.NEGATIVE_INFINITY;
double min = Double.POSITIVE_INFINITY;

可能是因為您只檢查6個數字,但我不知道您的程序在做什么。 從0開始。

初始化Max和Min如下

public static double calculateDiveScore(String diveLine) {
Scanner diveLineSc = new Scanner(diveLine);

int dive = diveLineSc.nextInt();
double difficulty = diveLineSc.nextDouble();
double max = diveLineSc.nextDouble();
double min = max;
double sum = max;


for( int i = 1; i < 7; i++){
    double score = diveLineSc.nextDouble();
    max = Math.max(max,score);
    min = Math.min(min,score);
    sum +=score;

}

double totalScore = (sum - max - min )* difficulty * 0.6;

return totalScore;

}

從第一個值開始最大值和最小值,然后減少一次循環。

double first = diveLineSc.nextDouble();
double max = first;
double min = first;
double sum = first;


for (int i = 0; i < 5; i++) {...}

或者,將您的值收集到數組中並使用庫方法。

double sum = 0;
ArrayList<Double> scores = new ArrayList<Double>();
for (int i = 0; i < 6; i++) {
    double score = diveLineSc.nextDouble();
    scores.add(score);
    sum += score;
}

double min = Collections.min(scores);
double max = Collections.max(scores);

請注意,在內部,Java可能會在調用minmax的列表中執行另一個循環。 如果您的代碼速度太慢(除非您要處理數百萬個分數,否則我真的懷疑這會很慢),第一個算法可能會更優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM