01/10/2018, 10:02

Cần giúp code java nhập vào danh sách học sinh

em có
public class hocsinh {
String Ten;
String GioiTinh;

public void nhapvao(){
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Nhập vào tên: ");
    Ten = keyboard.nextLine();
    System.out.println("Nhập vào giới tính: ");
    GioiTinh = keyboard.nextLine();
    
    
}

public void xuat(){
    System.out.printf(" Tên: %s | Giới Tính: ", Ten, GioiTinh);
    System.out.println("");

}

}

public class TestCom {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    int N;
    System.out.println("Nhập vào N: ");
    Scanner keyboard = new Scanner(System.in);
    N = Integer.parseInt(keyboard.nextLine());
    hocsinh[] std = new hocsinh[N];
    for (int i=1;i <= N; i++){
        System.out.println("Nhập vào sinh viên thứ" + i );
        std[i] = new hocsinh();
        std[i].nhapvao();
    }
    
    for (int i=1; i <= N; i++){
        std[i].xuat();
    }
    
    
}

}

các bác xem lỗi ở đâu mà khi chạy nó ra lỗi này
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
at test.com.TestCom.main(TestCom.java:27)

X viết 12:03 ngày 01/10/2018

ArrayIndexOutOfBounds

Bạn hiểu như thế nào về dòng này?

buzbum viết 12:12 ngày 01/10/2018

ArrayIndexOutOfBounds

e mới học nên cũng k rõ lắm

buzbum viết 12:08 ngày 01/10/2018

mạng vượt quá giới hạn là sao bác?

X viết 12:03 ngày 01/10/2018

Giả sử nhập N = 5
=>
…| 0 | 1 | 2 | 3 | 4 |…
Out of bounds là vùng …

Tao Không Ngu. viết 12:05 ngày 01/10/2018

Hi buzbum.
Định dạng lai code đi bạn.

buzbum viết 12:04 ngày 01/10/2018

nghĩa là giờ em đổi số vòng lặp lại là được ạ

X viết 12:15 ngày 01/10/2018

Thử đổi lại xem sao Tí đến giờ ăn cơm báo anh một tiếng rồi ăn nhé :v

buzbum viết 12:10 ngày 01/10/2018

được rồi a. e mới ăn sáng nên tối mới ăn tiếp :#

Bao Trung Tran viết 12:16 ngày 01/10/2018

Lỗi ArrayIndexOutOfBoundsException là khi đang gán hoặc set một index vượt quá index của mảng hiện có thể chứa. Index của mảng chỉ chạy từ Arrays.length -1. Ví dụ mảng có 5 phần tử thì index của nó là 0,1,2,3,4. Ở trên lỗi vì bạn đang gán i <= N. Hãy gán thành i<N;

Phan Bá Hải viết 12:17 ngày 01/10/2018
for (int i=1;i <= N; i++){
...
}

Lưu ý: Index của mảng được duyệt từ 0 đến n-1. VD mảng i có n = 5 phần tử thì của các phần tử trong mảng đó là i[0], i[1], i[2], i[3], i[4]
Hãy gán i = 0i < n
Còn in ra phần tử thứ mấy thì i + 1

Bài liên quan
0