使用新的BaseClass类实现以下项目。呼叫 新班级健身房:
十人正在评判国际体操比赛。每 法官给予参赛者0.0至10.0的表现分数, 包含在内,得分为小数点后一位。一些 法官赞成他们自己国家的竞争对手和/或给予较低的分数 比得上自己国家的竞争对手,得分最高和最低 在平均其他八个分数之前被丢弃。写一个程序 将在评委的十个分数中读取,丢弃最高分和最高分 得分最低,并计算其他八个得分的平均值 四位小数。
输入
读入一个或多个数据集(假设您不知道如何提前知道 许多)来自DataGym.in文件的10个分数。每个数据集都将使用 正好是输入文本文件的一行。将有十个漂浮 点数(每个空格与空格分开)在0.0之间 和文件的每一行包含10.0(包括小数点后一位)。
输入文件:
8.7 6.5 0.1 3.2 5.7 9.9 8.3 6.5 6.5 1.5
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
输出
打印,对于输入的每个数据集,平均值为四位小数 地方。这个平均值应该每次都在“竞争对手之前” X,平均得分是“,其中X表示输入文件中竞争对手的位置(从1开始)。
输出到上面输入文件的屏幕:
对于竞争对手#1,平均值为5.8625
对于竞争对手#2,平均值为0.0000
对于竞争对手#3,平均值为1.0000
到目前为止我的代码:
import java.io.*;
import java.util.*;
import java.text.*;
public class Gym {
public static void main(String args[]) throws IOException {
NumberFormat fmt = NumberFormat.getNumberInstance();
fmt.setMinimumFractionDigits(4);
fmt.setMaximumFractionDigits(4);
Scanner sf = new Scanner(new File("C:\\temp_Name\\DataGym.in.txt"));
int maxIndx = -1;
String text[] = new String[1000];
while (sf.hasNext()) {
maxIndx++;
text[maxIndx] = sf.nextLine();
}
sf.close();
for (int j = 0; j <= maxIndx; j++) {
Scanner sc = new Scanner(text[j]);
double a = 0;
double array[] = new double[1000];
double scoreAverage = 0;
int contestant = 0;
if (j <= 10) {
a = sc.nextDouble();
array[j] += a;
} else {
Arrays.sort(array);
int i = 0;
while (i < 10) {
scoreAverage += array[i];
i++;
}
}
contestant++;
String s = fmt.format(scoreAverage);
double d = Double.parseDouble(s);
System.out.println("For Competitor #" + contestant + ", the average is " + d);
}
}
}
我一直这样:
对于竞争对手#1,平均值为0.0
对于竞争对手#1,平均值为0.0
对于竞争对手#1,平均值为0.0
我如何丢弃最高和最低分数?
答案 0 :(得分:0)
您需要将display: table
移到循环之外。这样,每次循环时它都不会重置为0.
同时将int Contestant = 0;
移出循环。