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

Глава 4

Задача 4.6 "Победители марафона."

Пользуясь сведениями из задачи 3.2, обеспечьте ввод информации о бегуне в интерактивном режиме. Модифицируйте программу так, чтобы она могла определять победителя пробега (подсказка: используйте для решения данной задачи пример 4.5).

Решение

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



import java.io.*;
import javagently.*;
class Maraphon1 {
Maraphon1 () {
Display d = new Display ("Maraphon");
d.prompt("Country","England");
d.prompt("Name","Edgar Green" );
d.prompt("Age",32);
d.prompt("Result",2.59);
int m = 5;
Stayer stayer[] = new Stayer[m];
int i = 0;
Time highest = new Time(180);
Time number = new Time(0);
int n = 0;
d.println(" ");
d.println(" Maraphon1 information\n");
d.println(" In the maraphon run : ");
d.println(" ======================= ");
for (; ;) {
d.ready("\nPress ready when peoples entered");
String country = d.getString("Country"); //
String name = d.getString("Name"); //
int age = d.getInt("Age"); //
Time t = new Time(d.getDouble("Result"));
stayer[i] = new Stayer(country, name, age, t);
stayer[i].write();
if (stayer[i].bestTime.lessThan(highest)) {
highest = stayer[i].bestTime;
n = i;
}
if(stayer[i].bestTime.min < 10){
d.println(stayer[i].name + " " + stayer[i].age+ " age "+ "from " + stayer[i].country + "\n"
+ " the MaraphonTime - " + stayer[i].bestTime.hour +":0" + stayer[i].bestTime.min);
}
else{
d.println(stayer[i].name + " " + stayer[i].age+ " age "+ "from " + stayer[i].country + "\n"
+ " the MaraphonTime - " + stayer[i].bestTime.hour +":" + stayer[i].bestTime.min);
}
d.println(" ");
if(highest.min < 10)
d.println("Best result - " + highest.hour+":0"+ highest.min + " by " + stayer[n].name + " from " + stayer[n].country);
else
d.println("Best result - " + highest + " by " + stayer[n].name + " from " + stayer[n].country);
i++;
}
}
public static void main (String [ ] args) {
new Maraphon1 ();
}
}
class Time {
int hour; long 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 = Math.round(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 () {
if(min<10) return hour + ":0" + min + " " ;
else
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 MaraphonTime - " + bestTime);
}
}


Результат :

Подсказка

Поскольку в этой программе массив количества бегунов задан жестко, можно сделать ее более гибкой введя еще одно поле в Display-окно, в котором можно будет задавать длину массива бегунов (количество участников забега - переменную m), о которых будет вводиться информация.


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

Hosted by uCoz