Назад | Начало урока | Вперед
Содержание

Глава 3

Задача 3.2 "Участники марафона "

Существует пять основных кандидатов на участие в марафоне, который проводится в Саванне. Они приехали из Англии, Германии, Италии, Испании и Норвегии. Организаторам гонок должна быть представлена инф о каждом бегуне: имя, страна, возраст и лучший результат, показанный участником до настоящего времени (в часах и минутах).

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

- напишите короткую программу, чтобы проверить, правильно ли созданы пять объектов упомянутого выше класса для бегунов.

- Теперь напишите программу Race, которая создаст объекты для бегунов, сгенерирует случайным образом время пробега для каждого из них, а затем выведет список бегунов с подробными их описаниями, включая результаты пробега и лучший показатель (Используйте для этого метод Math.min).

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

Решение

Поскольку здесь в условии ставится последовательно две задачи, сделаем соответственно два варианта решения.

1-й вариант
2-й вариант

Вверх

1-й вариант

1. Для представления спортсмена содадим класс Stayer. Мы уже не раз создавали подобные классы с переменными, конструктором и функцией вывода write().

class Stayer {

String country;
String name;
int age;
Time bestTime;

Stayer(String c, String n, int a, Time t ){

country = c;
name = n;
age = a;
bestTime = new Time(t);
}

void write () {

System.out.println(name + " " + age+ " age "+ "from " + country +
" the bestMaraphonTime - " + bestTime);
}
}

Воспользуемся так же классом Time для представления времени. Этот класс весьма удобен и подробно рассмотрен в книге. Создадим три объекта класса Time и три объекта класса Stayer.

Time t1 = new Time(1,45);
Time t2 = new Time(1,55);
Time t3 = new Time(2,00);

Stayer eng, ger, ita;

В конструкторе инициируем объекты и выведем информацию о них вызвав для каждого спортсмена его метод write()

Код программы:


class Maraphon1 {

Time t1 = new Time(1,45);
Time t2 = new Time(1,55);
Time t3 = new Time(2,00);

Stayer eng, ger, ita;

Maraphon1 () {

eng = new Stayer("England", "Edgar Green", 32, t1);
ger = new Stayer("Germany", "Kurt Schnitke",35, t2);
ita = new Stayer("Italy", "Marko Pavarotti", 29, t3);

System.out.println();
System.out.println(" Maraphon1 information\n");

System.out.println(" In the maraphon run : ");
System.out.println(" ======================= ");
eng.write();
ger.write();
ita.write();
System.out.println();

}

public static void main (String [ ] args) {

new Maraphon1 ();
}
}

class Time {

int hour;
int min;

Time (int h, int m) {

hour = h;
min = m;
}

Time (int mins) {

hour = mins / 60;
min = mins % 60;
}

Time (double t) {

hour = (int) t;
min = (int) t*100 - hour*100;
}

Time (Time t) {

hour = t.hour;
min = t.min;
}

void addTime (int m) {

min +=m;
hour+= min / 60;
min %= 60;
}

boolean lessThan (Time t) {

return hour < t.hour | (hour==t.hour & min < t.min);
}

public String toString () {

return hour + ":" + min + " ";
}
}

class Stayer {

String country;
String name;
int age;
Time bestTime;

Stayer(String c, String n, int a, Time t ){

country = c;
name = n;
age = a;
bestTime = new Time(t);
}

void write () {

System.out.println(name + " " + age+ " age "+ "from " + country +
" the bestMaraphonTime - " + bestTime);
}
}


Результат :

Подсказка


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz