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

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;