java - Soalan tentang While,break
習慣沉默
習慣沉默 2017-05-17 10:02:00
0
2
567

Maafkan saya, mengapa apabila gelung while kod ini memasuki bahagian belakang kod lain, gelung while seterusnya tidak boleh lagi memasuki cawangan separuh pertama? Saya fikir syarat selepas jika harus dipenuhi Hasil larian tidak boleh dipecahkan kerana ia tidak boleh memasuki gelung pertama. Meminta nasihat kepada Tuhan:

SearchString kelas awam {

public static void main(String[] args) {
    String s1 = "abcaaaaaaaabcabc";
    String s2 = "abc";
    int len = s2.length();
    int pos = 0;
    int count = 0;
    while (true) {
        if (s1.indexOf(s2, pos) == -1) {
            System.out.println("Search Over, result count=" + count);
            break;
        } else {
            System.out.println("Position" + (count + 1) + " is " + pos);
            int a = pos + len;
            pos = s1.indexOf(s2, a);
            count++;
        }
    }
}

}
Hasil larian ialah -1 10 13 -1 10 13, gelung tak terhingga

習慣沉默
習慣沉默

membalas semua(2)
黄舟

Oleh kerana keputusan tidak boleh dipadankan apabila membuat pertanyaan untuk kali ketiga, nilai yang dikembalikan ialah -1 Jika parameter kedua indexOf() kurang daripada 0, ia akan dianggap sebagai 0.
Jadi kitaran pertama bermula semula.

Anda boleh nyahpepijat dengan titik putus, hasilnya akan menjadi sangat jelas

洪涛

Apabila memasuki gelung kedua, lain dimasukkan, dan pos menjadi 13. Gelung seterusnya, iaitu, apabila memasuki gelung ketiga, ia masih memasuki gelung lain.
Kali ini, a menjadi 16 in else, dan pos ialah -1 Dalam gelung seterusnya, s1, indexOf(s2, pos) ialah 0, dan ia masih memasuki lain, jadi gelung tak terhingga dijana.

Saya rasa anda tidak perlu menukar pos masuk lain setiap kali, tetapi memintas terus separuh kedua rentetan s1.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!