आदर्श तरीका आपके कोड को फिर से कारक बनाना होगा ताकि आपको अब ऐसी जटिल नेस्टेड-लूप संरचना की आवश्यकता न हो। आपके शेष कोड की तरह दिखने के आधार पर, आपके b
और c
लूप अलग-अलग फ़ंक्शन बनने के लिए उम्मीदवार हो सकते हैं, अगर पूरे a
लूप नहीं हैं।
चूंकि यह लूप b
और c
आसन्न श्रृंखलाओं पर फिर से दिखता है, क्यों न उन्हें संयोजित करें और थोड़ा सा घोंसला घोंसला कम करें?
for (int a = 1; a <= 100; a++) //loop a (main loop)
{
int count = 1000;
while (count <= 3000) // combined loops 'b' and 'c'
{
if (count <= 2000)
{
// Old loop 'b' code
if (b == 1555)
goto fullbreak;
}
else
{
// Old loop 'c' code
...
}
count++;
}
}
fullbreak:
आप goto
के बजाय एक शर्त चर का भी उपयोग कर सकते हैं। यदि आप पुराने b
पाश से बाहर निकलना चाहते हैं लेकिन अभी भी पुराने c
लूप को संसाधित करना चाहते हैं, तो पुराने b
लूप कोड के अंदर बस count = 2001
सेट करें।
आदर्श रूप में, आप कम से कम और अधिक की तरह
for (int a = 1; a <= 100; a++) //loop a (main loop)
{
if (process_inner_loop(pass, required, args))
break;
}
कुछ करने के लिए फिर से कारक को यह सक्षम हो जाएगा जहां समारोह process_inner_loop
अपने मूल दो छोरों तक लपेटता है और रिटर्न गैर शून्य आप से बाहर तोड़ करना चाहते हैं संलग्न लूप। अब, goto
या हालत चर का उपयोग करने के बजाय, आप बस return 1;
कर सकते हैं।
अगर मैं सही ढंग सूचित किया गया है, कुछ भाषाओं निर्माण 'तोड़ने n' जहां' n' नेस्टेड लूप के से बाहर तोड़ने के लिए है समर्थन करते हैं। क्या मैं सही हू? –
@ और http: // download-llnw।oracle.com/javase/tutorial/java/nutsandbolts/branch.html – Anycorn
@Andreas: यह उनमें से एक नहीं है। @sundowatch: अपने कोड को दोबारा दोहराएं, न केवल आप अपनी समस्या का समाधान करेंगे, लेकिन आपका कोड क्लीनर और अधिक रखरखाव योग्य है। – GManNickG