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

length không nh n đ i s truy n vào, và tr l i m t s nguyên, trong tr

ng h p này b ng 6. L u ý r ng

ố ố

ả ạ

ộ ố

ườ

ư

vi c có m t bi n trùng tên v i ph

ng th c là hoàn toàn h p l (m c dù đi u này có th gây nh m l n

ế

ươ

ợ ệ

đ i v i ng

i đ c mã l nh).

ố ớ

ườ ọ

Đ tìm ch cái cu i cùng trong chu i, b n có th b xui khi n đ th theo cách làm sau:

ể ị

ế

ể ử

int

length = fruit.length();

char

last = fruit.charAt(length);

// SAI!!

Cách này không có tác d ng. Lý do là không có ch cái th 6 nào trong

"banana". Vì ta đã b t đ u đ m

ắ ầ

ế

t 0, nên sáu ch cái trong chu i đ

c đ m t 0 t i 5. Đ l y ch cái cu i cùng, ta ph i tr

ỗ ượ ế

ể ấ

ả ừ length đi

m t.

int

length = fruit.length();

char

last = fruit.charAt(length-1);

8.3 Duy t chu i

M t công vi c th

ng làm v i m t chu i là b t đ u t đi m đ u c a chu i, l n l

t ch n t ng kí t ,

ườ

ắ ầ ừ ể

ầ ủ

ỗ ầ ượ

ọ ừ

th c hi n m t s thao tác đ i v i ch cái đó, và công vi c đ

c ti p di n cho các ch cái còn l i đ n h t

ộ ố

ố ớ

ệ ượ

ế

ạ ế

ế

chu i. Ki u x lý nh th này đ

c g i là

ư ế

ượ ọ

duy t

. M t cách t nhiên đ th c hi n vi c duy t là dùng

ể ự

vòng l p

while

:

int

index = 0;

while

(index < fruit.length()) {

char

letter = fruit.charAt(index);

System.out.println(letter);

index = index + 1;

}

Vòng l p này đ duy t chu i và hi n th t ng ch cái trên m t dòng riêng. L u ý đi u ki n l p là

ị ừ

ư

ệ ặ

index

< fruit.length()

, nghĩa là khi

index

b ng v i chi u dài c a chu i, thì đi u ki n b vi ph m, và ph n

thân c a vòng l p không đ

c th c hi n. Kí t cu i cùng đ

c truy c p đ n s t

ng ng v i ch

ượ

ự ố

ượ

ế ẽ ươ

s

fruit.length()-1

.

Tên c a bi n vòng l p là

ế

index (có nghĩa là “ch s ”). M t

ỉ ố

ch s

ỉ ố là m t bi n hay giá tr đ c dùng đ ch

ế

ị ượ

ể ỉ

đ nh m t thành viên c a m t t p h p đ

c x p th t , trong tr

ng h p này là chu i các kí t . Ch s có

ộ ậ

ượ ế

ứ ự

ườ

ỉ ố

nhi m v ch đ nh thành viên nào b n c n bi t (vì v y mà nó có tên “ch s ”).

ụ ỉ ị

ạ ầ

ế

ỉ ố

8.4 L i th c thi

Tr v M c

ở ề ụ 1.3.2 tôi đã nói t i các l i th c thi, nh ng l i không xu t hi n đ n t n khi ch ng trình b t

ế ậ

ươ

đ u ch n. Trong Java, nh ng l i th c thi đ

c g i là các

ượ ọ

bi t l

ệ ệ.

Có th b n không th y nhi u l i th c thi, song vì ta ch a th c hi n nhi u thao tác có kh năng gây nên

ể ạ

ề ỗ

ư

nh ng l i lo i này. Và bây gi ta s gây l i. N u b n dùng ph

ng th c

ế

ươ

ứ charAt r i cung c p m t ch s

ỉ ố

là s âm ho c l n h n

ặ ớ

ơ length-1, Java sẽ phát ra m t bi t l . B n có th hình dung vi c “phát” bi t l

ệ ệ ạ

ệ ệ

cũng nh phát ra m t c n gi n d .

ư

ộ ơ

Khi đi u này x y đ n, Java in ra m t thông báo l i có ghi ki u bi t l và m t

ế

ệ ệ

l n v t ngăn x p

ế

ế , trong

đó có bi u th nh ng ph

ng th c đang ho t đ ng khi có bi t l x y ra. Sau đây là m t ví d :

ươ

ạ ộ

ệ ệ ả

public class

BadString {