Помогите с программой, которая должна прочитать файл данных и вывести результаты - PullRequest
0 голосов
/ 18 мая 2011

Итак, я работаю над этой программой (очевидно, домашнее задание):

В соревнованиях по прыжкам в воду каждый участник рассчитывает, отбрасывая самые низкие и самые низкие оценки. а затем добавление оставшихся баллов. Напишите программу, которая читает предоставленный файл данных в формате изображено в следующей таблице. Для каждого дайвера выведите имя и общую оценку дайвера, используя приведенные выше правила подсчета очков. Отформатируйте общий счет каждого дайвера до двух десятичных знаков. Так, например, вывод для Чен Руолин ниже будет: Чен Руолин - 56,90 балла.

Файл данных:

Chen Ruolin          9.2   9.3   9     9.9   9.5   9.5   9.6   9.8     
Emilie Heymans       9.2   9.2   9     9.9   9.5   9.5   9.7   9.6     
Wang Xin             9.2   9.2   9.1   9.9   9.5   9.6   9.4   9.8     
Paola Espinosa       9.2   9.3   9.2   9     9.5   9.3   9.6   9.8     
Tatiana Ortiz        9.2   9.3   9     9.4   9.1   9.5   9.6   9.8     
Melissa Wu           9.2   9.3   9.3   9.7   9.2   9.2   9.6   9.8     
Marie-Eve Marleau    9.2   9.2   9.2   9.9   9.5   9.2   9.3   9.8     
Tonia Couch          9.2   9     9.1   9.5   9.2   9.3   9.4   9.6     
Laura Wilkinson      9.7   9.1   9.3   9.4   9.5   9.4   9.6   9.2

Класс дайвера:

import java.util.Vector;

public class Diver
{
private String firstName;
private String lastName;
private Vector scores;

public Diver()
{
    firstName = "";
    lastName = "";
    scores = new Vector();
}

public Diver(String firstName, String lastName, double... scores)
{
    this.firstName = firstName;
    this.lastName = lastName;
    this.scores = new Vector();

    for (double score : scores)
    {
        this.scores.add( score );
    }
}

public String getFirstName()
{
    return firstName;
}

public void setFirstName(String firstName)
{
    this.firstName = firstName;
}

public String getLastName()
{
    return lastName;
}

public void setLastName(String lastName)
{
    this.lastName = lastName;
}



public String toString()
{
    return firstName + " " + lastName + scores.toString();
}
}

Программа тестирования дайвера:

import java.io.*;
import java.util.*;

class TestDiver
{
public static void main(String[] args)
{
    try {
        Scanner scanner = new Scanner(new File("diving_data.txt"));
        scanner.useLocale(Locale.US);

        double[] scores = new double[8];

        while (scanner.hasNext())
        {
            String firstName = scanner.next();
            String lastName  = scanner.next();

            System.out.println("Diver: " + firstName + " " + lastName + " " + scores);

            double min = Double.MIN_VALUE;
            double max = Double.MAX_VALUE;


            for (int i = 0; i < scores.length; i++)
            {
                scores[i] = scanner.nextDouble();
            }

            Diver diver = new Diver(firstName, lastName, scores);
        }
        scanner.close();
    }
    catch (Exception e)
    {
        System.out.println("Problem: " + e.getMessage());
    }
}
}

Я ни в коем случае не программист, и у меня болит голова от просмотра кода. Мой вопрос заключается в следующем: как мне заставить его правильно читать результаты. Имена выводятся нормально, но в основном это набор искаженных символов. Что мне не хватает, что вызывает эту проблему?

Любая помощь будет отличной. Спасибо.

1 Ответ

0 голосов
/ 18 мая 2011

Вы читали партитуры, просто не печатали их.

import java.io.*;
import java.util.*;

class TestDiver
{
    public static void main(String[] args)
    {
        try {
            Scanner scanner = new Scanner(new File("diving_data.txt"));
            scanner.useLocale(Locale.US);

            double[] scores = new double[8];

            while (scanner.hasNext())
            {
                String firstName = scanner.next();
                String lastName  = scanner.next();

                // scores is not defined here yet
                System.out.println("Diver: " + firstName + " " + lastName);

                double min = Double.MIN_VALUE;
                double max = Double.MAX_VALUE;


                for (int i = 0; i < scores.length; i++)
                {
                    scores[i] = scanner.nextDouble();

                    // prints scores
                    System.out.println(" " + scores[i]);
                }

                Diver diver = new Diver(firstName, lastName, scores);
            }
            scanner.close();
        }
        catch (Exception e)
        {
            System.out.println("Problem: " + e.getMessage());
        }
    }
}

Ваша программа также просто читает первую запись файла, я предоставлю вам право изменить этот код, чтобы прочитать все записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...