Hàm nextLine() trong Java cứ bị nhảy đúp trong vòng lặp for?
Chào các anh chị,
Em mới bắt đầu học Java, có bài tập “tạo danh sách những người đăng ký tham gia đua xe đạp và cho hộ số báo danh”, sau khi code giá trị nhập từ bàn phím thì em dùng Scanner với lệnh nextLine trong vòng lặp for để tạo danh sách. Nhưng mà khi chạy nextLine để trước hay sau câu nói được in ra đều bị lặp lại 2 lần.
code của e:
public class ProjetJava {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int nb ;
System.out.print("Nhập số lượng tay đua tham gia");
nb = sc.nextInt();
String[] tab = new String[nb];
for(int i=0;i<tab.length;i++){
System.out.print("Nhập tên tay đua số " +(i+1)+": ");
tab[i]= sc.nextLine(); // Lỗi chỗ này ạ
}
for(int i=0;i<tab.length;i++){
System.out.println(tab[i] + " SBD " + (i+1));
}
}
}
kết qua ra thành:
Nhập số lượng tay đua tham gia 3 // số 3 là nhập từ bàn phím
Nhập tên tay đua số 1: Nhập tên tay đua số 2: // nó hiện thế này luôn, đáng nhẽ phải dừng ở “…số 1” để e nhập tên vào nhưng nó lại nhảy sang 2 luôn :-s
Các anh chị biết có thể giúp e fix lỗi này với ạ. Em cảm ơn!
Khi bạn nhập biến số lượng tay đua thì chỉ có phần số được biến nb nhận, còn phím Enter thì vẫn còn nằm trong stream nên nó sẽ được đọc vào ở lần nhập ký tự tiếp theo. Bạn cần loại nó khỏi luồng trước khi tiến hành nhập tên tay đua. Thêm dòng
sc.nextLine()
phía sau dòngnb = sc.nextInt();
là được.là do khi b nhập 3 xong enter (\n) thì 3 vào trong nextInt, còn \n sẽ vào nextLine, để ko bị lỗi như này thì làm như sau: cách 1, chuyển hết về nextLine, nb=Integer.parseInt(sc.nextLine());
cách 2 tạo thêm scanner nữa để nhập, lần sau thì tra google nha b, trên đó có hết.
Cảm ơn các anh chị,
Sau khi ngồi nguyên ngày google không ra mới phải đăng topic hỏi.
E hiểu đoạn này rồi, e cảm ơn mọi ng đã giúp đỡ
nextline trong java bị trôi
tra lại coi =))