[英]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可能會在調用min
和max
的列表中執行另一個循環。 如果您的代碼速度太慢(除非您要處理數百萬個分數,否則我真的懷疑這會很慢),第一個算法可能會更優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.