Nested for Loop in Java

Nested for Loop in Java: जिस तरह हमने if Conditionals Statements की Nesting की थी उसी तरह से हम Loops की भी Nesting कर सकते हैं। यानी कई बार प्रोग्राम में ऐसी जरूरतें होती हैं कि उस खास काम को Loop की साधारण प्रक्रिया द्वारा नहीं कर सकते। तब हमें एक Loop के अंदर एक अन्‍य Loop को Use करना पडता है। जब किसी Loop में वापस Loop का प्रयोग किया जाता है तो इसे Loop की Nesting करना कहते हैं।

For Loop की जब Nesting की जाती है तब हमेंशा Outer Loop, Inner Loop को Control करता है। Outer Loop Row के लिये व Inner Loop Column के लिये लिखा जाता है। इसका Syntax निम्नानुसार होता है-

Nested for Loop in Java

जब Program Control, Outer for Loop पर आता है तब check करता है कि Outer For Loop की Condition सत्‍य है या नहीं। यदि Outer For Loop की Condition सत्‍य होती है, तो Program Control Inner Loop में प्रवेश करता है।

यहां Program Control को एक और for Loop मिलता है और प्रोग्राम Control इस for की Condition को check करता है। यदि Inner for Loop की Condition सत्‍य होती है तो Inner for Loop Iterate होता है और ये Inner Loop तब तक Iterate होता रहता है जब तक कि Inner Loop की Condition सत्‍य होती है।

जैसे ही inner Loop की Condition असत्‍य होती है, प्रोग्राम Control वापस Outer Loop को check करता है। यदि वापस Outer Loop की Condition सत्‍य हो जाती है तो Program Control पुन: inner Loop में प्रवेश करता है और पुन: Inner Loop का तब तक Iteration होता है जब तक कि Inner Loop की condition असत्‍य नहीं हो जाती। Program Control इन्हीं दोनों Loops के बीच तब तक Iterate होता रहता है जब तक कि दोनों Loops की Condition असत्‍य ना हो जाए।

यदि Outer Loop की Condition पहली बार में ही असत्‍य हो जाए तो Inner Loop का Execution ही नहीं होता है। Inner Loop का Execution तभी होता है जब Outer Loop की Condition सत्‍य हो। Loop की Nesting को समझने के लिये आगे एक प्रोग्राम बनाया गया है। इससे for Loop की Nesting व उसके काम करने तरीके को अच्छी तरह से समझाया गया है।

Example: एक ऐसा प्रोग्राम बनाओ जो निम्न Format को print करे।

*
* *
* * *
* * * *
* * * * *

इस प्रोग्राम में दो for Loop चला, गए हैं और Condition इस प्रकार की रखी गई है कि Inner Loop उतनी ही बार चले जितना बाहर का Loop चलाने वाले Variable का मान हो। प्रोग्राम निम्नानसार है:

public class ForLoopNested
{
	public static void main(String args[])
	{
		for(int i=1; i<=5; i++)
		{
			for(int j=1; j<=i; j++)
			{
				System.out.print(" * ");
			}
			System.out.println();
		}
	}
}

जब किसी Statement की Nesting की जाती है तब Inner Most Control Statement पहले Execute होता है और फिर क्रम से Outer Control Statements Execute होते हैं। जब ये Program Run किया जाता है, तब सबसे पहले Program Control Outer Loop में पहुंचता है। Outer Loop की Condition true होती है क्योंकि i का मान 1 से कम है।

इसलिए Program Control Outer Loop के Statement Block में प्रवेश करता है। Statement Block में फिर से एक Loop प्राप्त होता है। ये Loop भी True Return करता है, क्योंकि Inner Loop के Variable j का मान i के मान 1 के बराबर है। इस स्थिति मे Program Control Inner Loop के Statement Block में प्रवेश करता है और एक * Print करता है।

चूंकि हम चाहते हैं कि * Print होने के बाद भी हमें New Line प्राप्त ना हो, इसलिए हमने इस Block में out Object के print() Method का प्रयोग किया है।

Inner Loop के Statement Block का Execution होने के बाद j का मान Increment हो कर 2 हो जाता है। चूंकि i का मान 1 है और j का मान 2 है, इसलिए j का मान i के मान से छोटा या बराबर नहीं है।

इस स्थिति में Inner Loop false Return करता है। जब Inner Loop False हो जाता है, तब Program Control Outer Loop के Variable i का मान Increment करके 2 कर देता है।

चूंकि i का मान अभी भी 5 से कम है इसलिए Outer Loop की Condition true होती है और Program Control Outer Loop के Statement Block में पहुंचता है, जहां उसे फिर से Inner Loop प्राप्त होता है।

चूंकि Inner Loop के Looping Variable को हमने Inner Loop के Parenthesis में ही Declare किया है, इसलिए जब Program Control इस Inner Loop में प्रवेश करता है तब Inner Loop के Variable को Create करता है और जब Program Control Inner Loop से बाहर निकलता है, तब Inner Loop के Variable को Destroy कर देता है।

इसलिए जितनी बार भी Program Control Outer Loop के Statement Block में आता है, वे Inner Loop के Variable को फिर से Create करता है। ऐसा करने के कारण Inner Loop के Variable का मान वापस एक हो जाता है क्योंकि Inner Loop का Variable Create होने के बाद फिर से Initialize होता है।

चूंकि Inner Loop के Variable j का मान फिर से 1 हो गया है और ये मान Outer Loop के Variable i के मान से कम है, इसलिए Loop Execute होता है और नई Line में एक * Print करता है। फिर j का मान Increment होकर 2 हो जाता है। ये मान 2 i के मान के बराबर है, इसलिए Inner Loop फिर से Execute होता है और एक और * Print करता है।

जब तीसरी बार Inner Loop के Variable j का Increment होता है, तब j का मान i के मान से ज्यादा हो जाता है और Program Control Inner Loop से बाहर निकलता है। वहां उसे एक println() Method मिलता है। ये Method केवल एक New Line प्रदान करता है। इसके बाद i के मान का Increment होकर i का मान 3 हो जाता है।

चूंकि i का ये मान भी 5 से छोटा है, इसलिए Outer Loop फिर से Execute होता है। Inner Loop के Variable का मान वापस 1 हो जाता है। इस स्थिति में अब Inner Loop तीन बार Execute होता है और तीन * Print करता है।

ये प्रक्रिया तब तक चलती रहती है, जब तक कि Outer Loop के Variable i का मान 6 नहीं हो जाता। जैसे ही i का मान 6 हो जाता है, Outer Loop false Return करता है। जिससे Program Control Outer Loop के Statement Block में प्रवेश ही नहीं करता और सीधे ही Program के अन्त पर पहुंच जाता है।

इस तरह से इस Program में हम देख सकते हैं, कि Inner Loop का Execution उसके Outer Loop की Condition पर निर्भर करता है। यदि Outer Loop Execute होता है तो ही Inner Loop Execute होता है।

for Loop का ज्यादातर प्रयोग किसी Array के विभिन्न Index Number पर स्थित मानों को प्राप्त करने के लिए किया जाता है। पिछले अध्‍याय में हमने एक Array में Stored मानों को कई Statements द्वारा Screen पर Print किया था। उसी Program के Array के विभिन्न मानों को हम निम्नानुसार Loop के प्रयोग के द्वारा भी Access कर सकते हैं।

// Program
public class ArrayWithLoop
{
	public static void main(String args[])
	{
		String name[] = new String[6];

		name[0] = "Balaji" ;
		name[1] = "Madhav" ;
		name[2] = "BalGopal" ;
		name[3] = "Nandlal" ;
		name[4] = "BalKishan" ;
		name[5] = "ManMohan" ;
	
		for(int i=0; i<=5; i++)
		{
			System.out.println("Name in Array at Index Number ["+i+"] = " + name[i]);
		}
	}
}
	
// Output 
   Name in Array at Index Number [0] = Balaji
   Name in Array at Index Number [1] = Madhav
   Name in Array at Index Number [2] = BalGopal
   Name in Array at Index Number [3] = Nandlal
   Name in Array at Index Number [4] = BalKishan
   Name in Array at Index Number [5] = ManMohan

जैसाकि हमने पहले भी कहा कि किसी भी Array के पहले Index Number का मान हमेंशा 0 होता है, इसलिए हमें जो Loop Array के लिए Use करना होता है, उसे हमेंशा 0 से शुरू करते हैं। इस Program में जब i का मान 0 होता है तब Array के Index Number 0 पर स्थित String Screen पर Print होती है। जब i का मान 1 होता है, तब Array के Index Number 1 पर स्थित String Screen पर Print होती है। इसी तरह से Array की विभिन्न Strings Output में Print होती है।

जब हम किसी 2-D Array के विभिन्न Data Elements को Loop द्वारा Access करना चाहते हैं, तो हमें दो Inner Loops का प्रयोग करना पडता है। इसी तरह से यदि हमें 5-D Array के विभिन्न Data Elements को Access करना हो, तो हमें पांच Inner Loop चलाने होते हैं। हमने पिछले अध्‍याय में जिस 2-D Array को सामान्‍य Statement द्वारा Access किया था यदि हम उसी Array को Loop द्वारा Access करना चाहें, तो ये काम हम निम्नानुसार कर सकते हैं-

// Program
public class TableWithArray
{
	public static void main(String args[])
	{
		int table[][] = new int[4][3];
			
		table[0][0] = 10 ;
		table[0][1] = 20 ; 
		table[0][2] = 30 ;
		table[1][0] = 50 ;
		table[1][1] = 46 ;
		table[1][2] = 20 ;
		table[2][0] = 2 ;
		table[2][1] = 12 ;
		table[2][2] = 30 ;
		table[3][0] = 93 ;
		table[3][1] = 39 ;
		table[3][2] = 3 ;
	
		for(int i=0; i<4; i++)
		{
			for(int j=0; j<3; j++)
			{
			    System.out.println("Value in Array at Index Number [“ +i+ “][“ +j+ “] = " + table[i][j]);
			}
		}
	}
}

// Output 
	Value in Array at Index Number [0][0] = 10
	Value in Array at Index Number [0][1] = 20
	Value in Array at Index Number [0][2] = 30
	Value in Array at Index Number [1][0] = 50
	Value in Array at Index Number [1][1] = 46
	Value in Array at Index Number [1][2] = 20
	Value in Array at Index Number [2][0] = 2
	Value in Array at Index Number [2][1] = 12
	Value in Array at Index Number [2][2] = 30
	Value in Array at Index Number [3][0] = 93
	Value in Array at Index Number [3][1] = 39
	Value in Array at Index Number [3][2] = 3

किसी 2-D Array में Outer Loop हमेंशा ROW को Represent करता है और Inner Loop COLUMNS को Represent करता है। चूंकि हमारी Table में ROWS की संख्‍या 4 है इसलिए Outer Loop को चार बार चलाना जरूरी है और COLUMNS की संख्‍या 3 है इसलिए Inner Loop को तीन बार चलाया है। साथ ही Array के Index Numbers की शुरूआत हमेंशा 0 से होती है, इसलिए Loop के प्रारम्भिक मान को 0 Initialize किया है।

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS