[英]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.