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

Глава 3

Задача 3.8 "Точное время "

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

Решение 1

Решать задачу будем пошагово. Сначала создадим и проверим в работе класс NewTime как наследник класса Time. Добавим одну переменную - секунды, и перепишем один конструктор и остальные функции класса. В параметр функции add() помещаем минуты и секунды.

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 + " ";
}
}

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



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
new_time01 is: 2:25:21

Adding 33 min 165 sec
new_time01 after adding is: 3:01:06

Adding 58 min 58 sec
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


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

Hosted by uCoz