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