Tạo mã bên dưới trong khi chơi với các vòng lặp. Mã dưới đây lưu trữ các giá trị Fibonacci vào một mảng và sau đó in chúng bằng cách sử dụng cho các vòng lặp.Tăng cường đối với ngoại lệ vòng lặp
int [] numbers;
numbers = new int[25];
numbers[0] = 1;
numbers[1] = 1;
System.out.println("Initializing the array values");
for(int i = 2; i < numbers.length; i++)
{
numbers[i] = numbers[i-1] + numbers[i-2];
}
System.out.println("Printing out Fibonacci values");
for(int i = 0; i < numbers.length; i++)
{
System.out.print(numbers[i] + ", ");
}
Mã trên hoạt động tốt. Lần đầu tiên tôi ném nó với nhau mặc dù, tôi sử dụng một vòng lặp tăng cường để in ra các giá trị (thứ hai cho vòng lặp trong mã). Điều này biên dịch tốt, nhưng khi tôi chạy nó tôi nhận được sau đây;
Initializing the array values
Printing out Fibonacci values
1, 1, 2, 3, 8, 34, 377, 17711, Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 34
at ArrayDemo.main(ArrayDemo.java:21)
Tôi không hiểu sai. Thay đổi vòng lặp thứ hai không nên thay đổi các giá trị (bạn sẽ nhận thấy các giá trị fibonacci là sai (tức là các giá trị bị thiếu)). Và tôi không hiểu tại sao một vòng lặp tăng cường đơn giản sẽ bỏ qua các chỉ mục. Bây giờ, điều này không thực sự là một vấn đề lớn bởi vì đây không phải là một dự án hay bất cứ thứ gì, nó chỉ gây lỗi cho tôi mà tôi không thể hiểu tại sao nó lại làm việc đó. Bất kì manh mối nào?
Tăng cường cho vòng lặp trông giống như thế này;
for(int i : numbers)
{
System.out.print(numbers[i] + ", ");
}
Cảm ơn bạn. Ngắn gọn và dễ hiểu. –