Lỗi java: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

E mới học java, cho e hỏi đây là lỗi gì vậy? E cảm ơn

public class test4 {
    public static void main(String[] args) {
        Scanner atom = new Scanner(System.in);
        System.out.printf("Nhập số sinh viên: ");
        int x = atom.nextInt();
        int[] mảng = new int[x];
        System.out.println("Nhập phần tử của mảng: ");
        for (int i = 1; i <= x; i++) {
            System.out.printf("a[%d] = ", i);
            mảng[i] = atom.nextInt();
        }
        System.out.println("Các phần tử của mảng");
    }
}
Nhập số sinh viên: 2
Nhập phần tử của mảng:
a[1] = 3
a[2] = 1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
    at test4.main(test4.java:13)

Process finished with exit code 1

Trong java và các ngôn ngữ lập trình khác. Mảng bắt đầu từ 0 nha bạn

4 Likes

để 0 vẫn bị mà

Kích thước mảng là 2 thì mảng chỉ gồm a[0] và a[1] thôi

3 Likes

ArrayIndexOutOfBoundsException là lỗi xảy ra khi bạn thao tác trên mảng với chỉ số phần tử vượt quá độ dài của mảng.

Như trong code, x = 2 => new int[x] sẽ tạo ra mảng 2 phần tử, thứ tự là mang[0]mang[1].
Bạn viết for (int i = 0; i <= x; i++), như vậy nó sẽ lặp 3 lần i = 0, 1, 2. Với i = 0i = 1, ở dòng code thứ 13, mang[i] có nghĩa. Nhưng với lần lặp i = 2, mang[i] giờ là mang[2], phần tử này không thỏa mãn mảng mang của bạn, do chỉ có 2 phần tử

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?