Các ph n t c a m ng này là nh ng
ầ ử ủ
ả
ữ tham chi u
ế đ n các chu i, thay vì là b n thân các chu i.
ế
ỗ
ả
ỗ
Bây gi ta c n m t m ng các chu i khác đ gi i mã các b c c a lá bài:
ờ
ầ
ộ
ả
ỗ
ể ả
ậ ủ
String[] ranks = {
"narf"
,
"Ace"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"10"
,
"Jack"
,
"Queen"
,
"King"
};
Lý do có m t
ặ "narf" là đ đ ng vào ch ph n t th không c a m ng, v n ch ng bao gi đ c dùng đ n
ể ứ
ỗ
ầ ử ứ
ủ
ả
ố
ẳ
ờ ượ
ế
(hay l ra không có). Các b c h p lý ch có t 1–13. Đ tránh ph n t th
ng này, ta đã có th b t đ u t
ẽ
ậ ợ
ỉ
ừ
ể
ầ ử ườ
ể ắ ầ ừ
0, nh ng vi c ánh x s t nhiên h n n u ta mã hóa 2 là 2, và 3 là 3, v.v.
ư
ệ
ạ ẽ ự
ơ
ế
V i các m ng này, ta có th ch n đ
c
ớ
ả
ể ọ
ượ String thích h p b ng cách dùng ch s là
ợ
ằ
ỉ ố suit và rank. Trong
ph
ng th c
ươ
ứ printCard,
public static void
printCard(Card c) {
String[] suits = {
"Clubs"
,
"Diamonds"
,
"Hearts"
,
"Spades"
};
String[] ranks = {
"narf"
,
"Ace"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"10"
,
"Jack"
,
"Queen"
,
"King"
};
System.out.println(ranks[c.rank] +
" of "
+ suits[c.suit]);
}
bi u th c
ể
ứ suits[c.suit] có nghĩa là “dùng bi n th c th
ế
ự
ể suit t đ i t ng
ừ ố ượ c làm ch s trong m ng có
ỉ ố
ả
tên suits, r i ch n chu i thích h p.” K t qu c a đo n mã này
ồ
ọ
ỗ
ợ
ế
ả ủ
ạ
Card card =
new
Card(1, 11);
printCard(card);
là Jack of Diamonds.
13.4 Ph
ng th c
ươ
ứ sameCard
T “same” (gi ng nhau, cùng) là m t trong nh ng hi n t
ng ngôn ng trong ti ng Anh mà có v ngoài
ừ
ố
ộ
ữ
ệ ượ
ữ
ế
ẻ
quá rõ ràng, nh ng khi b n suy nghĩ thì s th y còn có nhi u đi u h n b n ch đón ban đ u.
ư
ạ
ẽ ấ
ề
ề
ơ
ạ
ờ
ầ
Ch ng h n, n u nói r ng “Chris và tôi có cùng (lo i) xe,” thì tôi mu n nói r ng hai chi c xe cùng nhãn
ẳ
ạ
ế
ằ
ạ
ố
ằ
ế
hi u, song là hai chi c khác nhau. Còn n u nói “Chris và tôi có cùng m ,” thì ý r ng m c u ta và m tôi
ệ
ế
ế
ẹ
ằ
ẹ ậ
ẹ
cùng là m t ng
i. B i v y ý nghĩa c a “cùng” thì l i khác nhau tùy theo ng c nh.
ộ
ườ
ở ậ
ủ
ạ
ữ ả
Khi nói v các đ i t
ng, ta cũng g p s m p m t
ng t . Ch ng h n, n u hai
ề
ố ượ
ặ ự ậ
ờ ươ
ự
ẳ
ạ
ế
Card nh nhau, thì li u
ư
ệ
có nghĩa là chúng có cùng d li u (b c và ch t), hay đó th c ra cùng là m t đ i t
ng
ữ ệ
ậ
ấ
ự
ộ ố ượ Card?
Đ xem li u có ph i hai tham chi u cùng ch đ n m t đ i t
ng hay không, ta dùng toán t
ể
ệ
ả
ế
ỉ ế
ộ ố ượ
ử ==. Ch ng
ẳ
h n:
ạ
Card card1 =
new
Card(1, 11);
Card card2 = card1;