returnİki fordöngü içinde iç içe geçmiş ifadeye teorik olarak her zaman ulaşılacağı bir durumum var .
Derleyici buna katılmaz ve döngünün returndışında bir ifade gerektirir for. Şu anki anlayışımın ötesinde olan bu yöntemi optimize etmenin zarif bir yolunu bilmek istiyorum ve kırma girişimlerimden hiçbiri işe yaramıyor gibi görünüyor.
Ekte, rastgele tamsayılar üreten ve bir int parametresi olarak yönteme geçirilen bir aralık içinde oluşturulan ikinci bir rastgele tamsayı bulunana kadar tekrarlanan yinelemeleri döndüren bir atamadan bir yöntem eklenmiştir.
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)) olarak return
nextIntbir istisna atıyor range < 0Geri dönüşün ulaşıldığı tek durumrange == 0
while(true)dizinlenmiş döngü yerine bir döngü kullanabilirsiniz. Bu, derleyiciye döngünün asla geri dönmeyeceğini söyler.