THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 103

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;