如何对我们math.max和math.min省略高分和低分

时间:2015-04-21 01:13:22

标签: java file sum max min

(这是java)在我的方法中,我正在计算一个文件中给出的7个分数。我必须设置a max和min,初始化它们,即我遇到问题的地方。另外,我必须使用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;
}

4 个答案:

答案 0 :(得分:1)

您需要按如下方式初始化变量。

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

答案 1 :(得分:0)

可能是因为你只检查了6个号码,但我不知道你的程序在做什么。从0开始我。

答案 2 :(得分:0)

按以下步骤初始化最大值和最小值

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;

}

答案 3 :(得分:0)

以第一个值开始最大值和最小值,然后循环减去一次。

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的列表中执行另一个循环。如果你的代码变得太慢(我真的怀疑它会在你处理数百万的分数之前),第一种算法可能会更加优化。