मेरे पास एक ऐसी स्थिति है जहां returnदो forछोरों में निहित बयान हमेशा, सैद्धांतिक रूप से पहुंच जाएगा।
संकलक असहमत है और लूप के returnबाहर एक बयान की आवश्यकता है for। मैं इस तरीके को अनुकूलित करने के लिए एक सुंदर तरीका जानना चाहता हूं जो मेरी वर्तमान समझ से परे है, और मेरे ब्रेक के किसी भी कार्यान्वित कार्यान्वयन से काम नहीं लगता है।
संलग्न एक असाइनमेंट से एक विधि है जो यादृच्छिक पूर्णांकों को उत्पन्न करती है और जब तक दूसरा यादृच्छिक पूर्णांक नहीं मिल जाता है, तब तक पुनरावृत्त पुनरावृत्तियों को एक अंतर पैरामीटर के रूप में विधि में पारित सीमा तक उत्पन्न किया जाता है।
private static int oneRun(int range) {
int[] rInt = new int[range+1]; // Stores the past sequence of ints.
rInt[0] = generator.nextInt(range); // Inital random number.
for (int count = 1; count <= range; count++) { // Run until return.
rInt[count] = generator.nextInt(range); // Add randint to current iteration.
for (int i = 0; i < count; i++) { // Check for past occurence and return if found.
if (rInt[i] == rInt[count]) {
return count;
}
}
}
return 0; // Never reached
}
oneRun(0)) और आप देखते हैं कि आप जल्दी से अपने अप्राप्य तक पहुंच जाते हैंreturn
nextIntअपवाद के लिए एक अपवाद फेंकता है range < 0जहां वापसी होती हैrange == 0
while(true)अनुक्रमित लूप के बजाय उपयोग कर सकते हैं । यह संकलक को बताता है कि लूप कभी वापस नहीं आएगा।