Blue Pelican Java第26课项目体操

时间:2016-03-14 00:32:26

标签: java

  

使用新的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

我如何丢弃最高和最低分数?

1 个答案:

答案 0 :(得分:0)

您需要将display: table移到循环之外。这样,每次循环时它都不会重置为0.

同时将int Contestant = 0;移出循环。