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

}

return

sum;

}

M c dù cách này đúng, song ch

ng trình b t đ u dài dòng. Sau này tôi s g i ý m t gi i pháp khác

ươ

ắ ầ

ẽ ợ

ng n h n nhi u.

ơ

Đo n mã l nh trên gi i thi u hai toán t mà ta ch a t ng g p,

ư ừ

ặ += và -=. Nh ng toán t này cho ta vi t

ế

ng n g n l nh tăng ho c gi m bi n. Chúng cũng g n gi ng nh

ọ ệ

ế

ư ++ và --, ch khác ch (1) chúng làm

ở ỗ

vi c đ

c c v i

ệ ượ ả ớ double l n

ẫ int, và (2) l ng tăng ho c gi m không nh t thi t b ng 1. Câu

ượ

ế ằ

l nh

ệ sum.second -= 60.0; t ng đ ng v i

ươ

ươ

ớ sum.second = sum.second - 60;

11.9 Ph

ng th c s a đ i

ươ

ứ ử

Xét m t ví d v ph

ng th c s a đ i, ph

ng th c

ụ ề

ươ

ứ ử

ươ

ứ increment, nh m tăng thêm m t s giây cho tr c

ộ ố

ướ

vào m t đ i t

ng

ộ ố ượ Time. M t l n n a, ta có b n nháp ph ng th c này nh sau:

ộ ầ

ươ

ư

public static void

increment(Time time,

double

secs) {

time.second += secs;

if

(time.second >= 60.0) {

time.second -= 60.0;

time.minute += 1;

}

if

(time.minute >= 60) {

time.minute -= 60;

time.hour += 1;

}

}

Dòng đ u tiên th c hi n thao tác c b n; nh ng dòng còn l i đ x lý các tr

ng h p ta đã xét.

ơ ả

ạ ể ử

ườ

Li u ph

ng th c này có đúng không? Đi u gì s x y ra n u đ i s

ươ

ẽ ả

ế

ố ố secs l n h n nhi u so v i 60? Trong

ơ

tr

ng h p nh v y, tr đi 60 m t l n là ch a đ ; ta ph i ti p t c tr đ n khi

ườ

ư ậ

ộ ầ

ư

ả ế ụ

ừ ế

second nh h n 60. Ta có

ỏ ơ

th làm đi u này b ng cách thay các l nh

ệ if b ng các l nh

ệ while:

public static void

increment(Time time,

double

secs) {

time.second += secs;

while

(time.second >= 60.0) {

time.second -= 60.0;

time.minute += 1;

}

while

(time.minute >= 60) {

time.minute -= 60;

time.hour += 1;

}

}

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.