NextLine() trong Java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package bai9;

import java.util.Scanner;

/**
 *
 * @author Ngoc Bich
 */
public class Cau1 {
    public static void main(String[] args) {
        Scanner sv = new Scanner(System.in);
        System.out.print("Nhập số sinh viên: ");
        int n = sv.nextInt();
        sv.nextLine();
        String hoVaTen[] = new String[n];
        for (int i = 0; i < n; i++) {
            System.out.println("Nhập sinh viên thứ " + (i + 1) + " : ");
            hoVaTen[i] = sv.nextLine();
        }
        System.out.println("Nhập tên sinh viên muốn tìm kiếm: ");
        String tk = sv.nextLine();
        boolean check = false;
        for (int i = 0; i < n; i++) {
            check = tk.equals(hoVaTen[i]);
            if (check == true) {
                System.out.println("Sinh viên bạn cần tìm xếp theo stt là: " + (i+1));
                break;
            } 
        }
        if (check != true) {
            System.out.println("Danh sách đã cho không có sinh viên bạn cần tìm!");
        }
    }
}

Cho mình hỏi trong chương trình trên: câu lệnh sv.nextLine(); dùng để làm gì ạ?

1 Like

sv.NextLine() dùng để nhận gía trị nhâp từ bàn phím
p/s: Bỏ code và markdown nhá

Phương thức nextLine() trong của đối tượng Scanner dùng để nhận vào một dòng String nhập từ bàn phím, kết thúc khi thấy dấu xuống dòng.

1 Like

Mình hiểu phương thức NextLine() rồi nhưng mà trong đoạn code trên: tại sao nếu mình bỏ dòng : sv.nextLine(); thì khi run ct thì sau khi mình nhập số sinh viên thì nó hiển thì là:
Nhập sinh viên thứ 1:
Nhập sinh viên thứ 2:
Và mình chỉ nhập được vào mỗi sinh viên thứ 2 trở đi, còn thứ 1 thì không nhập được?ai biết giải thích giùm mình với? cảm ơn nhiều!

1 Like

bỏ code và markdown là sao à bạn?

Diễn đàn DayNhauHoc có hỗ trợ markdown để mọi người có thể xem code dễ dàng hơn :smiley:
Việc đó thì mình đã sửa giúp bạn rồi
Lần sau bạn cho code của bạn vào giữa dấu 3 này nhé `
Đầu 3 dấu và cuối 3 dấu
Thân

Đọc đây:

1 Like

khi bạn muốn nhập nhiều dòng thì dùng next(), dòng cuối cùng hẵn dùng nextLine()

vd:
string a = input.next();
string b = input.next();
...
string z = input.nextLine();

mình cũng hay bị thế, trong C++ có cin.igore(); còn trong java thì mình không biết, mình toàn thêm một lệnh nextLine(); nữa.:joy:

Khi bạn nhập số sinh viên xong nhấn enter thì java nó chỉ đẩy số đi thôi, còn dấu enter vẫn ở trong bộ đệm. Vì vậy dòng sv thứ nhất gặp dấu enter sẽ nhảy đến thằng tiếp theo mà k cho bạn nhập.
Khắc phục: bạn dùng input.nextInt

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