भविष्य के आगंतुकों के लिए सिर्फ एक संदर्भ मान लीजिए कि हमारे पास foo . नामक एक सरणी है जिसमें 10 आइटम हैं। यदि हम निम्नलिखित कोड का उपयोग करके पुनरावृति करने का प्रयास करते हैं तो क्या होगा?:
for(int i = 0;i<=foo.length;i++){
//some code that uses foo[i] here
}
उत्तर एक IndexOutOfBoundsException है कारण सरल है। जैसा कि पहले कहा गया था foo इसमें 10 तत्व शामिल हैं, जिसका अर्थ है कि आप foo[0] to foo[9] . का उपयोग करके उन तक पहुंच सकते हैं चूंकि सरणी अनुक्रमण 0 से शुरू होता है foo[9] आपके सरणी में अंतिम तत्व शामिल है(दसवां तत्व)`
हालांकि for . में क्या होता है लूप?
जब आप पुनरावृति करते हैं तो आप हमेशा i<=foo.length . की जांच करते हैं जारी रखने के लिए। समस्या यह है कि जब i . का मान 9 व्यंजक है i<=foo.length(which means i<=10) true . का मूल्यांकन करता है .इसका मतलब है कि for लूप एक आखिरी बार चलेगा। जब आपके लूप में ऐसा होगा तो आप foo[10] को एक्सेस करने का प्रयास करेंगे। जो मौजूद नहीं है और इसलिए IndexOutOfBoundsException
इसलिए याद रखें कि जब आप किसी सरणी पर पुनरावृति करना चाहते हैं तो आप हमेशा i<foo.length . का उपयोग करें
तो जैसा कि आपने भी समझ लिया है कि आपकी समस्या का समाधान यह है:
for(int i=0; i< field.length; i++){
String[] field = allFields.split(",");
String field1 = "$"+field[i];
BsonField includeFields = Accumulators.first(field[i], field1);
includeList.add(includeFields);
}