मैं जावा में लूप के लिए string.indexof() को अंत में string.length() कैसे रोकूं?


सभी को नमस्कार, मैं लूप का उपयोग करके स्ट्रिंग में किसी वर्ण की सभी घटनाओं को खोजने के लिए String.indexOf() का उपयोग कर रहा हूं। समस्या यह है कि, मैंने सिखाया है कि यदि मैं लूप के लिए स्ट्रिंग पर स्ट्रिंग की लंबाई के अंत तक पुनरावृत्ति करता हूं तो पुनरावृत्ति समाप्त होनी चाहिए और केवल उस वर्ण की घटनाओं को प्रिंट करना चाहिए जो पाया गया था लेकिन लूप के लिए अभी भी -1 प्रिंट होता है, मतलब यह कि यह चरित्र की अंतिम घटना का पता लगाने के बाद नहीं रुका।

मैंने क्या प्रयास किया है:

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

आउटपुट:

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

मेरा प्रश्न है: पहले 2, 3 और 11 को प्रिंट करने के बाद लूप क्यों नहीं रुका। यह -1 क्यों प्रिंट कर रहा है और पहले 11 को प्रिंट करने के बाद लूप क्यों नहीं रुका? किसी भी मदद के लिए धन्यवाद।

समाधान 1

यह वह जगह है जहां डिबगर के तहत कोड चलाना और कोड लाइन के माध्यम से लाइन दर लाइन आगे बढ़ना और वेरिएबल्स का निरीक्षण करने से आपको कोडप्रोजेक्ट में प्रश्न टाइप करने की तुलना में इसे तेजी से हल करने में मदद मिलेगी।

समस्या IndexOf के बारे में नहीं है। समस्या आपके लूप के प्रबंधन में है।

आपको a का उपयोग नहीं करना चाहिए for इसके लिए लूप. ए while लूप अधिक उपयुक्त होगा, और आपको घटना की स्थिति को ट्रैक करने के लिए केवल एक चर की आवश्यकता है, दो की नहीं।

コメント

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