hoàn toàn. Còn các lo i trái cây là không có th t , vì v y mà ta không th so sánh táo v i cam đ
c.
ạ
ứ ự
ậ
ể
ớ
ượ
Trong Java, ki u
ể boolean là không th t ; ta không th nói r ng
ứ ự
ể
ằ true l n h n
ớ
ơ false.
T p h p các lá bài thì l i ph n nào đ
c x p th t , có nghĩa r ng đôi khi ta có th so sánh lá bài và đôi
ậ
ợ
ạ
ầ
ượ ế
ứ ự
ằ
ể
khi không. Ch ng h n, tôi bi t r ng cây 3 Nhép thì cao h n 2 Nhép và 3 Rô thì cao h n 3 Nhép. Nh ng
ẳ
ạ
ế ằ
ơ
ơ
ư
lá bài nào h n, 3 Nhép hay 2 Rô? M t lá thì có b c cao h n, nh ng lá kia thì có ch t cao h n.
ơ
ộ
ậ
ơ
ư
ấ
ơ
Đ làm cho các lá bài so sánh đ
c v i nhau, ta ph i quy t đ nh xem th nào quan tr ng h n, b c hay
ể
ượ ớ
ả
ế ị
ứ
ọ
ơ
ậ
ch t. Cách l a ch n là tùy ý, nh ng khi b n mua m t c bài m i, thì các qu n Nhép đ
c x p c nh
ấ
ự
ọ
ư
ạ
ộ ỗ
ớ
ấ
ượ ế ạ
nhau, sau đó là các quân Rô, r i c nh v y. B i th ta hãy coi r ng ch t thì quan tr ng h n.
ồ ứ
ư ậ
ở
ế
ằ
ấ
ọ
ơ
Khi đã quy t đ nh nh v y, ta có th vi t
ế ị
ư ậ
ể ế compareCard. Ph ng th c này nh n tham s là hai
ươ
ứ
ậ
ố
Card r i
ồ
tr l i 1 n u lá bài th nh t h n, -1 n u lá bài th hai h n, và 0 n u chúng t
ng đ ng.
ả ạ
ế
ứ
ấ ơ
ế
ứ
ơ
ế
ươ
ồ
Tr
c tiên, ta so sánh ch t:
ướ
ấ
if
(c1.suit > c2.suit)
return
1;
if
(c1.suit < c2.suit)
return
-1;
N u hai câu l nh trên ch ng có câu l nh nào đúng, thì các ch t ph i b ng nhau, và ta ph i so sánh b c:
ế
ệ
ẳ
ệ
ấ
ả ằ
ả
ậ
if
(c1.rank > c2.rank)
return
1;
if
(c1.rank < c2.rank)
return
-1;
N u l i ch ng có câu nào đúng, thì hai b c ph i b ng nhau, và vì v y ta ph i tr l i
ế ạ
ẳ
ậ
ả ằ
ậ
ả ả ạ 0.
13.6 M ng các lá bài
ả
Đ n gi ta đã th y m t vài ví d v phép h p (kh năng k t h p nh ng đ c đi m c a ngôn ng l p trình
ế
ờ
ấ
ộ
ụ ề
ợ
ả
ế ợ
ữ
ặ
ể
ủ
ữ ậ
theo nhi u cách b trí khác nhau). M t trong nh ng ví d đ u tiên ta b t g p là vi c dùng phép kích
ề
ố
ộ
ữ
ụ ầ
ắ ặ
ệ
ho t ph
ng th c nh là m t ph n c a bi u th c. M t ví d khác là c u trúc l ng ghép g m các câu
ạ
ươ
ứ
ư
ộ
ầ ủ
ể
ứ
ộ
ụ
ấ
ồ
ồ
l nh: b n có th đ t m t l nh
ệ
ạ
ể ặ
ộ ệ if bên trong m t vòng l p
ộ
ặ while, hay bên trong m t l nh
ộ ệ if khác, v.v.
Khi đã bi t đ
c d ng nh v y, và đã h c đ
c v m ng và đ i t
ng, thì có l b n ch ng ng c nhiên
ế ượ ạ
ư ậ
ọ ượ ề ả
ố ượ
ẽ ạ
ẳ
ạ
khi đ
c bi t r ng ta có th t o nên m ng ch a nh ng đ i t
ng. Và b n có th đ nh nghĩa nh ng đ i
ượ
ế ằ
ể ạ
ả
ứ
ữ
ố ượ
ạ
ể ị
ữ
ố
t
ng có bi n th c th là các m ng; b n có th l p nên nh ng m ng ch a m ng khác; b n có th đ nh
ượ
ế
ự
ể
ả
ạ
ể ậ
ữ
ả
ứ
ả
ạ
ể ị
nghĩa đ i t
ng ch a đ i t
ng khác, v.v. Trong hai ch
ng ti p theo, ta s th y nh ng ví d v cách
ố ượ
ứ
ố ượ
ươ
ế
ẽ ấ
ữ
ụ ề
k t h p nh v y trên c s các đ i t
ng
ế ợ
ư ậ
ơ ở
ố ượ Card.
Ví d này t o nên m t m ng g m 52 quân bài:
ụ
ạ
ộ
ả
ồ
Card[] cards =
new
Card[52];
Sau đây là s đ tr ng thái cho đ i t
ng này:
ơ ồ ạ
ố ượ
M ng hi n t i có ch a các
ả
ệ ạ
ứ
tham chi u
ế đ n đ i t ng; nó không ch a b n thân các đ i t ng
ế
ố ượ
ứ
ả
ố ượ Card.
Nh ng ph n t này đ u đ
c kh i t o v
ữ
ầ ử
ề
ượ
ở ạ ềnull. B n có th truy c p t ng ph n t trong m ng theo cách
ạ
ể
ậ ừ
ầ ử
ả