ฉันมีสถานการณ์ที่returnคำสั่งที่ซ้อนอยู่ในสองforลูปจะมาถึงเสมอในทางทฤษฎี
คอมไพเลอร์ไม่เห็นด้วยและต้องการreturnคำสั่งนอกforลูป ฉันต้องการทราบวิธีที่สวยงามในการเพิ่มประสิทธิภาพวิธีนี้ซึ่งอยู่นอกเหนือความเข้าใจในปัจจุบันของฉันและดูเหมือนว่าการใช้งานการหยุดพักจะไม่ได้ผล
Attached เป็นวิธีการจากการกำหนดที่สร้างจำนวนเต็มแบบสุ่มและส่งกลับการวนซ้ำที่วนซ้ำจนกว่าจะพบจำนวนเต็มสุ่มที่สองซึ่งสร้างขึ้นภายในช่วงที่ส่งผ่านไปยังเมธอดเป็นพารามิเตอร์ int
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)แทนการวนซ้ำที่จัดทำดัชนีได้ สิ่งนี้บอกคอมไพเลอร์ว่าลูปจะไม่กลับมา