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

tên Bob.java.old.

Xóa b t m t n a mã l nh t file

ộ ử

Bob.java. Th biên d ch l i.

N u gi đây ch

ng trình biên d ch đ

c thì b n bi t r ng l i n m n a kia. Hãy ph c h i l i n a v a

ế

ươ

ượ

ế ằ

ỗ ằ ở ử

ụ ồ ạ ử ừ

xóa r i l p l i cách th .

ồ ặ ạ

N u ch

ng trình v n không biên d ch n i, thì l i sai ph i n m n a còn l i này. Hãy xóa đi m t n a

ế

ươ

ả ằ ở ử

ộ ử

s mã l nh r i l p l i cách th .

ồ ặ ạ

M t khi b n đã tìm th y và s a đ

c l i, thì hãy d n d n ph c h i l i ph n mã l nh đã xóa, t ng ít t ng

ượ ỗ

ụ ồ ạ

ít m t.

Quá trình này th t l m c m, nh ng th t ra là nhanh h n so v i b n nghĩ; và cách này cũng r t đáng tin

ậ ộ

ư

ơ

ớ ạ

c y.

TÔI ĐÃ LÀM THEO CH D N C A TRÌNH BIÊN D CH MÀ V N CH A CÓ TÁC D NG.

Ỉ Ẫ

Ư

M t s thông báo c a trình biên d ch l i có đo n l i khuyên nh , ch ng h n “class Golfer must be

ộ ố

ạ ờ

declared abstract. It does not define int compareTo(java.lang.Object) from interface
java.lang.Comparable.” (l p Golfer ph i đ

c khai báo là tr u t

ng. Nó không đ nh nghĩa int

ả ượ

ừ ượ

compareTo(java.lang.Object) t trong interface java.lang.Comparable.) Nghe có v nh trình biên d ch

ư

đang b o b n khai báo Golfer là l p tr u t

ng, và n u b n đ c cách này thì có l ch ng hi u đó là gì

ừ ượ

ế

ẽ ẳ

ho c cách làm th nào.

ế

Th t may là, trình biên d ch đã sai. Trong tr

ng h p này, gi i pháp là đ m b o r ng

ườ

ả ằ Golfer có m t

ph

ng th c mang tên

ươ

compareTo đ nh n tham s là m t

ộ Object.

Đ ng đ trình biên d ch d t mũi b n. Các thông báo l i cho b n ch ng c là đã có tr c tr c, nh ng cách

ư

kh c ph c mà nó chúng đ a ra đ u không đáng tin c y.

ư

D.2 L i th c thi

CH

NG TRÌNH TÔI VI T B TREO.

ƯƠ

N u m t ch

ng trình d ng l i và hình nh không làm gì, ta nói r ng nó đã b

ế

ươ

ư

treo. Th ng thì đi u

ườ

này nghĩa là nó m c ph i m t vòng l p vô h n ho c đ quy vô h n.

ặ ệ

N u có m t vòng l p c th mà b n nghi ng có v n đ , hãy thêm m t l nh

ế

ặ ụ ể

ộ ệ

print

ngay tr

c vòng l p,

ướ

đ in ra “tien vao vong lap” và m t l nh khác ngay sau vòng l p, in ra “thoat khoi vong lap”.

ộ ệ

Ch y

ch

ng trình. N u b n th y đ

c thông đi p th nh t mà không th y cái th hai thì đã có m t vòng l p

ươ

ế

ượ

vô h n. Xem ti p m c “Vòng l p vô h n” d

i đây.

ế

ướ

h u h t tr

ng h p, đ quy vô h n s làm cho ch

ng trình ch y m t lúc và sau đó phát ra bi t l

Ở ầ

ế

ườ

ạ ẽ

ươ

ệ ệ

StackOverflowException. N u đi u này x y ra, hãy xem ti p m c “Đ quy vô h n” sau đây.

ế

ế

N u b n

ế

không g p bi t l StackOverflowException

ệ ệ

này nh ng nghi ng r ng có v n đ x y ra v i m t ph

ng

ư

ờ ằ

ề ả

ươ

th c ho c hàm đ quy, b n v n có th s d ng các kĩ thu t trong m c “Đ quy vô h n”.

ể ử ụ

N u cách này cũng không có tác d ng thì có th là b n ch a hi u lu ng th c hi n c a ch

ng trình. Hãy

ế

ư

ệ ủ

ươ

đ c ti p m c “Lu ng th c thi” bên d

i.

ế

ướ

VÒNG L P VÔ H N

N u b n nghĩ r ng b n có m t vòng l p vô h n và cho r ng mình đã bi t đ

c vòng l p nào gây ra v n

ế

ế ượ

đ , thì hãy thêm m t l nh

ộ ệ

print

t i đi m cu i vòng l p và in ra giá tr các bi n trong đi u ki n cùng v i

ế

giá tr c a đi u ki n.

ị ủ