Tôi có một tình huống mà returntuyên bố lồng trong hai forvòng sẽ luôn luôn đạt được, theo lý thuyết.
Trình biên dịch không đồng ý và yêu cầu một returncâu lệnh bên ngoài forvòng lặp. Tôi muốn biết một cách thanh lịch để tối ưu hóa phương pháp này vượt quá sự hiểu biết hiện tại của tôi và không có bất kỳ nỗ lực thực hiện phá vỡ nào của tôi dường như hoạt động.
Đính kèm là một phương thức từ một phép gán tạo ra các số nguyên ngẫu nhiên và trả về các lần lặp được lặp đi lặp lại cho đến khi tìm thấy một số nguyên ngẫu nhiên thứ hai, được tạo trong một phạm vi được truyền vào phương thức dưới dạng tham số 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)) và bạn thấy rằng bạn nhanh chóng đạt được không thể truy cập của mìnhreturn
nextIntném một ngoại lệ cho range < 0Trường hợp duy nhất đạt được lợi nhuận là khirange == 0
while(true)vòng lặp thay vì chỉ mục. Điều này nói với trình biên dịch rằng vòng lặp sẽ không bao giờ trở lại.