भविष्य के आगंतुकों के लिए सिर्फ एक संदर्भ मान लीजिए कि हमारे पास 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);
}