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 {