Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Em là một newer . mn cho em hỏi là ở cái chổ vòng for i< S.length()-2 . tại sao phải là -2 ạ> em để S.length thì chương trình báo sai ạ !
public class TachChuoi {
static void DemChuoi(){
String S = "abcdefghijklmnopqmknabchgkihpaabcoijhabc";
int dem=0;
for (int i = 0; i < S.length()-2; i++) {
String S1 = S.substring(i, i+3);
if(S1.equals("abc")){
dem++;
}
}
System.out.println(dem);
}
public static void main(String[] args) {
DemChuoi();
}
}
Để chuỗi nó chạy và kiểm tra lần cuối cùng bắt đầu từ ký tự thứ 3 từ dưới đếm lên
Vậy nên nó chạy đến chữ a cuối cùng từ dưới đếm lên thì biến Dem++ được . nhưng để nó chạy qua chữ b mà vẫn gán S1 = S.substring(i, i+3); thì nó chỉ lấy được "bc" + thêm 1 ký tự nữa nhưng không còn nữa vì đã là cuối chuỗi.
Vì cái chỗ này nè bạn
Nếu bạn chạy tời S.Length() - 1 thôi thì trường hợp Substring của i+3 sẽ vượt ra ngoài phạm vi của chuỗi