Ví d th hai là
ụ ứ
addTime, ph
ng th c tính t ng hai th i gian. Ch ng h n, n u bây gi là
ươ
ứ
ổ
ờ
ẳ
ạ
ế
ờ 9:14:30, và
ng
i làm bánh c n 3 gi 35 phút, thì b n có th dùng
ườ
ầ
ờ
ạ
ể
addTime đ hình dung ra khi nào bánh ra lò.
ể
Sau đây là b n s th o c a ph
ng th c này; nó ch a th t đúng:
ả ơ ả ủ
ươ
ứ
ư
ậ
public static
Time addTime(Time t1, Time t2) {
Time sum =
new
Time();
sum.hour = t1.hour + t2.hour;
sum.minute = t1.minute + t2.minute;
sum.second = t1.second + t2.second;
return
sum;
}
M c dù ph
ng th c này tr l i m t đ i t
ng
ặ
ươ
ứ
ả ạ
ộ ố ượ Time, song nó không ph i là constructor. B n c n xem
ả
ạ ầ
l i và so sánh cú pháp c a m t ph
ng th c d ng này v i cú pháp c a m t constructor, vì chúng d gây
ạ
ủ
ộ
ươ
ứ ạ
ớ
ủ
ộ
ễ
nh m l n.
ầ
ẫ
Sau đây là m t ví d v cách dùng ph
ng th c. N u nh
ộ
ụ ề
ươ
ứ
ế
ư currentTime ch a th i gian hi n t i
ứ
ờ
ệ ạ
và breadTime ch a th i gian c n đ ng
i th n
ng bánh, thì b n có th dùng
ứ
ờ
ầ
ể
ườ
ợ ướ
ạ
ể
addTime đ hình dung
ể
ra khi nào s n
ng xong bánh.
ẽ ướ
Time currentTime =
new
Time(9, 14, 30.0);
Time breadTime =
new
Time(3, 35, 0.0);
Time doneTime = addTime(currentTime, breadTime);
printTime(doneTime);
K t qu c a ch
ng trình,
ế
ả ủ
ươ
12:49:30.0, là đúng. M t khác, cũng có nh ng tr
ng h p mà k t qu không
ặ
ữ
ườ
ợ
ế
ả
đúng. B n có đoán đ
c m t tr
ng h p nh v y không?
ạ
ượ
ộ
ườ
ợ
ư ậ
V n đ là ch ph
ng th c này không x lý đ
c tình hu ng khi s giây ho c s phút c ng l i v
t
ấ
ề ở ỗ
ươ
ứ
ử
ượ
ố
ố
ặ ố
ộ
ạ ượ
quá 60. Trong tr
ng h p đó, ta ph i “nh ” s giây còn d vào c t s phút, ho c nh s phút d vào c t
ườ
ợ
ả
ớ ố
ư
ộ ố
ặ
ớ ố
ư
ộ
gi .
ờ
Sau đây là m t d ng đúng c a ph
ng th c này.
ộ ạ
ủ
ươ
ứ
public static
Time addTime(Time t1, Time t2) {
Time sum =
new
Time();
sum.hour = t1.hour + t2.hour;
sum.minute = t1.minute + t2.minute;
sum.second = t1.second + t2.second;
if
(sum.second >= 60.0) {
sum.second -= 60.0;
sum.minute += 1;
}
if
(sum.minute >= 60) {
sum.minute -= 60;
sum.hour += 1;