Глава 3
Задача 3.8 "Точное время "
Перед проведением марафона было условлено, что время будет фиксироваться с точностью до доли секунды. Дополните класс Time так, чтобы он учитывал значение в секундах и долях секунды (вы можете использовать переменную, имеющую тип double). Протестируйте класс с помощью небольшой программы.
Решение 1
Решать задачу будем пошагово. Сначала создадим и проверим в работе класс NewTime как наследник класса Time. Добавим одну переменную - секунды, и перепишем один конструктор и остальные функции класса. В параметр функции add() помещаем минуты и секунды.
public class NewTime extends Time {
boolean lessThan (NewTime t) {
Код программы:
import javagently.*;
class TimeTest01 {
TimeTest01 () {
Time time, newTime;
NewTime new_time01, new_time02;
int hour = 2;
int min = 25;
int n_min = 13;
time = new Time (hour, min);
System.out.println();
System.out.println("time is: " +time);
int sec = 21;
new_time01 = new NewTime (hour, min, sec);
System.out.println("new_time01 is: " + new_time01);
System.out.println();
int sec2 = 165;
int n_min2 = 33;
System.out.println("Adding " + n_min2+ " min " + sec2+ " sec " );
new_time01.addTime(n_min2,sec2);
System.out.println("new_time01 after adding is: " + new_time01);
int sec3 = 58;
int n_min3 = 58;
System.out.println();
System.out.println("Adding " + n_min3+ " min " + sec3+ " sec " );
new_time01.addTime(n_min3,sec3);
System.out.println("new_time01 after adding is: " + new_time01);
System.out.println();
new_time02 = new NewTime(17,30,12);
System.out.println("new_time01 is: " + new_time01);
System.out.println("new_time02 is: " + new_time02);
System.out.println(" boolean compare new_time02.lessThan(new_time01) is: " + new_time02.lessThan(new_time01) );
}
// Put the Time class here
public 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 + " ";
}
}
public class NewTime extends Time {
int sec;
public NewTime (int h, int m, int s) {
super(h,m);
sec = s;
}
void addTime (int m, int s) {
min +=m;
hour += min / 60;
min %= 60;
sec +=s;
min += sec / 60;
sec %= 60;
hour += min / 60;
min %= 60;
}
boolean lessThan (NewTime t) {
return hour < t.hour | (hour==t.hour & min < t.min)|(hour==t.hour &( min < t.min & sec < t.sec));
}
public String toString () {
if(min<10&sec<10)
return hour + ":0" + min + ":0" + sec + " ";
if(min<10)
return hour + ":0" + min + ":" + sec + " ";
if(sec<10)
return hour + ":0" + min + ":0" + sec + " ";
return hour + ":" + min + ":" + sec + " ";
}
}
public static void main (String [] args) {
new TimeTest01();
}
}
Результат :
time is: 2:25
Adding 33 min 165 sec
Adding 58 min 58 sec
new_time01 is: 2:25:21
new_time01 after adding is: 3:01:06
new_time01 after adding is: 4:00:04
new_time01 is: 4:00:04
new_time02 is: 17:30:12
boolean compare new_time02.lessThan(new_time01) is: false
Назад |
Начало урока |
Вверх |
Вперед
Содержание