мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Последняя версияСледующая версия справа и слева
java:basics [19/01/2015 08:42] ybezrukovjava:basics [19/01/2015 09:22] ybezrukov
Строка 1: Строка 1:
 +[[Первый семестр]]
  
-====== Урок 1 ====== +[[Второй семестр]] 
-===== Начало работы =====+ 
 + 
 +====== Первый семестр ====== 
 + 
 + 
 + 
 +===== Урок 1 ===== 
 + 
 +==== Начало работы ====
  
   - Запустите Eclipse   - Запустите Eclipse
Строка 939: Строка 948:
  catch(IOException ex) {  catch(IOException ex) {
  }  }
 + }
 + }
 +}
 +
 +</code>
 +
 +Работа делится на две части. Первая заключается в создании системы классов и объектов для представления данных и начальном заполнении их информацией из файла. Вторая в статистической обработке данных.
 +
 +Часть 1.
 +
 +Наша задача состоит в обработке файла tdf14_teams.txt. Для этого требуется создать следующие 4 класса.
 +
 +1. Racer. У нашего участника есть имя, фамилия, национальность, год рождения и номер участия. В классе должны быть необходимые геттеры и сеттеры, а так же метод int age(int year), который позволяет вычислить возраст участника, год передается в качестве параметра (например 2014)
 +2. Team. Команда имеет название и список участников. Должны быть реализованы следующие методы:
 +- Team(String name) конструктор, который принимает в качестве аргумента название команды. Список гонщиков инициализируется пустным списком
 +- void insert(Racer racer) добавляет гонщика в команду
 +- String getName() геттер для названия команды
 +- int numberOfRacers() возвращает количество гонщиков в команде
 +- Racer getRacers(int i) возвращает гонщика по номеру. Нумерация идет с нуля.
 +- int totalAge(int year) возвращает суммарный возраст участников. Год передается в качестве параметра.
 +3. TeamsList. Класс для списка команд. Должны быть реализованы следующие методы:
 +- TeamsList() конструктор, инициализирующий список команд пустым списком.
 +- void insert(Team team) добавляет команду в общий список.
 +- Team getTeam(String teamName) возвращает команду по ее названию. Если такой команды не найдено, должен возвращаться null.
 +- int numberOfTeams() возвращает количество команд
 +- Team getTeam(int i) возвращает i-ю команду. Нумерация с нуля.
 +4. TourDeFrance главный класс программы, содержащий метод main. В этом классе должны выполнятся вызовы методов для чтения данных о велосипедистах, создаваться необходимые объекты (участники, команды, список команд), показываться информация о командах и их участниках. После чтения данных и заполнения объектов нужно ответить на вопрос: каков средний возраст участников Тур де Франс 2014. Ответ округлить до двух знаков после запятой. Набросок для этого класса приведен далее.
 +
 +<code java>
 +
 +public class TourDeFrance {
 + /**
 + * Метод для создания гонщика, на основани файла с списком гонщиков/команд
 + * @param line одна строка из файла
 + * @param teamsList список команд, который заполняется на основании строки из файла
 + */
 + public static void parceTeamLine(String line, ListeEquipe teamsList) {
 + // Элементы в строках нашего файла разделени знаками табуляции, их мы
 + // и будем использовать чтобы отличить один элемет от другого. 
 + String[] elem = line.split("\t");
 +
 + // Информация о гонщике
 + String nat = elem[0];
 + String racerFamilyName = elem[1];
 + String racerName = elem[2];
 + int year = Integer.parseInt(elem[3]);
 + int number = Integer.parseInt(elem[4]);
 + String teamName = elem[5];
 +
 + // TODO Найти команду по имени в списке
 + // TODO Если не найдено, то создать команду и добавить в список
 + // TODO Создать гонщика и добавить в команду
 + }
 +
 + /**
 + * Метод для создания команд
 + * @param  fileName Имя файла для команд
 + * @param  teamsList список команд
 + * @return если чтение данных прошло успешно, то возвращается true (это значит,
 + *    что все команды/участники прочитаны и занесены в список)
 + *    В противном случае возвращается false
 + */
 + public static boolean createTeams(String fileName, ListeEquipe teamsList) {
 + // Объект, связанный с файлом, откуда мы будем построчно читать данные
 + ReadData reader = new ReadData();
 +
 + if (reader.open(fileName)) {
 + // Пропустим заголовок
 + String line = reader.readLine();
 +
 + // Обработаем строку для добавления в список
 + while ((line = reader.readLine()) != null) {
 + parceTeamLine(line, teamsList);
 + }
 + reader.close();
 + return true; // все прошло хорошо
 + }
 + else {
 + return false; // или плохо
 + }
 + }
 +
 + /**
 + * Главный метод 
 + * @param args аргументы командной строки
 + */
 + public static void main(String[] args) {
 + final int currentYear = 2014;
 + final String teamsFileName = "tdf14_teams.txt";
 +
 + // TODO Создать список команд (и инициализировать!)
 +
 + // Обработка файла с командами
 + boolean res = createTeams(teamsFileName, temsList);
 + if (!res) {
 + System.out.println("Произошла ошибка с чтением списка команд");
 + }
 + else {
 + // TODO Оставшаяся часть программы (вывести данные, чтобы удостовериться в корректном чтении файла,
 + // вычислить средний возраст участников и т.д.
  }  }
  }  }