Bagaimana cara membuat string.indexof() berhenti di akhir string.length() dalam loop for di java

pemrograman


Halo semuanya, Saya menggunakan String.indexOf() untuk menemukan semua kemunculan karakter dalam string menggunakan for loop. Masalahnya adalah, saya mengajarkan bahwa jika saya mengulangi string dalam loop for sampai akhir panjang string, iterasi harus berakhir dan hanya mencetak kemunculan karakter yang ditemukan tetapi loop for masih mencetak -1, artinya tidak berhenti setelah menemukan kemunculan karakter terakhir.

Apa yang saya coba:

public static void main(String[] args) {

     String str1 = "hello from lagos";
	   String guess = "l";
	   int index = str1.indexOf(guess);
	   System.out.println("index is : " + index); // to show where the first occurrence is 
	   for(int i = 0; i < str1.length(); i++) {
		   System.out.println("For many ocuurrences: " + index);
		   index = str1.indexOf(guess, index + 1);
		      
	   }
	}

Keluaran:

index is : 2
For many ocuurrences: 2
For many ocuurrences: 3
For many ocuurrences: 11
For many ocuurrences: -1
For many ocuurrences: 2
For many ocuurrences: 3
For many ocuurrences: 11
For many ocuurrences: -1
For many ocuurrences: 2
For many ocuurrences: 3
For many ocuurrences: 11
For many ocuurrences: -1
For many ocuurrences: 2
For many ocuurrences: 3
For many ocuurrences: 11
For many ocuurrences: -1

Pertanyaan saya adalah: mengapa loop tidak berhenti setelah mencetak 2, 3 dan 11 yang pertama. Mengapa mencetak -1 dan mengapa loop tidak berhenti setelah mencetak 11 yang pertama? Terima kasih atas bantuannya.

Solusi 1

Di sinilah menjalankan kode di bawah debugger dan menelusuri kode baris demi baris serta memeriksa variabel akan membantu Anda menyelesaikan masalah ini lebih cepat daripada mengetik pertanyaan ke dalam CodeProject.

Masalahnya bukan tentang indexOf. Masalahnya adalah manajemen loop Anda.

Anda tidak seharusnya menggunakan a for lingkaran untuk ini. A while loop akan lebih tepat, dan Anda hanya memerlukan satu variabel untuk melacak posisi kemunculannya, bukan dua.

コメント

タイトルとURLをコピーしました