Rumah  >  Soal Jawab  >  teks badan

java - Soalan tentang While,break

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

習慣沉默習慣沉默2713 hari yang lalu572

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-05-17 10:04:00

    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

    balas
    0
  • PHP中文网

    PHP中文网2017-05-17 10:04:00

    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.

    balas
    0
  • Batalbalas