Mình đang bắt đầu học java. Có lỗi này thỉnh thoảng gặp phải nhưng không rõ nguyên nhân do đâu.
Ví dụ mình có đoạn code bên dưới - phương thức nhập vào thông tin SV và lưu vào danh sách.
private void input() {
// Nhap so luong SV trong danh sach
System.out.print(" So luong sinh vien can nhap vao: ");
Scanner keyboard = new Scanner(System.in);
int N = keyboard.nextInt();
// Nhap thong tin
for (int i = 1; i <= N; i++) {
String ten, diaChi, ID;
int tuoi;
float toan, ly, hoa;
System.out.println(" \nNhap thong tin cho sinh vien thu " + i);
System.out.print("\tHo va ten: ");
ten = keyboard.nextLine();
System.out.print("\tTuoi: ");
tuoi = keyboard.nextInt();
System.out.print("\tDia chi: ");
diaChi = keyboard.nextLine();
keyboard.nextLine();
System.out.print("\tID: ");
ID = keyboard.nextLine();
System.out.print("\tDiem toan: ");
toan = keyboard.nextFloat();
System.out.print("\tDiem ly: ");
ly = keyboard.nextFloat();
System.out.print("\tDiem hoa: ");
hoa = keyboard.nextFloat();
// Khoi tao doi tuong sinh vien
// Luu thong tin vua nhap vao doi tuong
Student st = new Student(ten, tuoi, diaChi, ID, toan, ly, hoa);
// Luu doi tuong vao list
list.add(st);
}
System.out.println("\n--------\n");
}
Màn hình console của mình nó lại chạy như thế này:
**CHUONG TRINH QUAN LY SINH VIEN**
1. Nhap gia tri cho danh sach sinh vien
2. Sap xep sinh vien theo chieu tang dan diem TB
3. Tim sinh vien co diem toan lon nhat
4. Hien thi nhung sinh vien tren 23 tuoi
5. Tim cac sinh vien ho 'Huynh'
6. Tim cac sinh vien co dia chi o DN
7. Thoat
---------
Nhap so de chon chuc nang: 1
So luong sinh vien can nhap vao: 5
Nhap thong tin cho sinh vien thu 1
Ho va ten: dai son
Tuoi: 23
Dia chi: hue
ID: 11
Diem toan: 10
Diem ly: 9
Diem hoa: 9.5
Nhap thong tin cho sinh vien thu 2
Ho va ten: Tuoi: 20 //Error here
Dia chi: dm
ID: 12
Diem toan: 9
Diem ly: 7
Diem hoa: 6.5
Nhap thong tin cho sinh vien thu 3
Ho va ten: Tuoi: 24 //Error here
Dia chi: am
ID: 14
Diem toan: 8
Diem ly: 7
Diem hoa: 9
Để ý ở lần nhập thứ 2 trở đi, chương trình ko dừng để nhập tên, mà nhảy thẳng sang dòng nhập tuổi.
Mình chưa rõ về cái phương thức Scanner này, mong anh em trên diễn đàn giải thích thêm.