Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Hỏi về dộ dài của xâu

11:22 20-04-2017 661 lượt xem 2 bình luận 11:22 01-05-2017

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();
    }

}

 

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Darky đã bình luận 11:22 01-05-2017

Để 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

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);

            // Chuỗi sẽ dem là "abc" mặc định trên code có độ dài là 3 ký tự .
            // Nên để dạng biến chuỗi và yêu cầu người dùng nhập vào thì ok hơn
            if(S1.equals("abc"))   dem++;        
        }
        System.out.println(dem);
    }
    public static void main(String[] args) {
        DemChuoi();
    }

}

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. 

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 12:05 20-04-2017

Vì cái chỗ này nè bạn

String S1 = S.substring(i, i+3);

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

Câu hỏi mới nhất