30/09/2018, 17:36

Hỏi code về tìm kiếm họ trong danh sách học sinh

Mình có viết một đoạn code thế này, nhưng khi cho in ra kết quả những người có họ tương ứng thì chỉ in được họ, không in được tên đầy đủ, có thành nào giúp với!

public class Study {
    public static void main(String[] args) {
        Scanner inPut = new Scanner(System.in);
        String [] hocSinh = new String[100] ;
        System.out.print("Nhập số học sinh: ");
        int n=inPut.nextInt();
        for (int i=0; i<n; i++){
            System.out.print("Nhập học sinh thứ "+(i+1)+": ");
            hocSinh[i] = inPut.next();
            inPut.nextLine();
        }
        
        System.out.print("Nhập họ muốn tìm: ");
        String ho = inPut.nextLine();
        
        System.out.println("Những người có họ " + ho + ": ");
        for (int i=0; i<n; i++){
            if(hocSinh[i].substring(0, (ho.length())).equals(ho)){
                System.out.println(hocSinh[i]+" ");
            }
        }
    }        
}
nonStop viết 19:38 ngày 30/09/2018

mình nghĩ code của bạn in ra đc họ tên đầy đủ rồi chứ nhỉ .

Nguyễn Văn Tâm viết 19:41 ngày 30/09/2018

inPut.nextLine();

Không cần dòng này.

hocSinh[i].substring(0, (ho.length())).equals(ho)

biểu thức này đâu phải tìm họ r so sánh đâu. theo mình sửa thành

int index = hocSinh[i].indexOf(" ");
if(hocSinh[i].substring(0, index).equals(ho)){
    System.out.println(hocSinh[i]+" ");
}
nonStop viết 19:47 ngày 30/09/2018

mình góp ý cho bạn nên dùng arrayList , và tốt hơn thì nên có class Học Sinh bao gồm 2 thuộc tính là họ tên và số thứ tự . làm kiểu này nông dân quá

Minh Hoàng viết 19:50 ngày 30/09/2018

hocSinh[i] = inPut.next();

Phải dùng nextLine, vì method next này chỉ lấy các kí tự đến dấu cách là ngừng rồi.

stackoverflow.com
AnnieOK

What's the difference between next() and nextLine() methods from Scanner class?

java, java.util.scanner
asked by AnnieOK on 03:34PM - 17 Mar 14

nonStop viết 19:43 ngày 30/09/2018

@Rok_Hoang nói chuẩn đấy , hồi học java core , mình hay bị thế

Minh Hoàng viết 19:40 ngày 30/09/2018

hocSinh[i] = inPut.next();
inPut.nextLine();

chắc chỗ này bạn ấy nhầm cái này:

hocSinh[i] = inPut;
hocSinh[i].nextLine();

p/s: Mình cũng mới học đến khúc này à giống problem của gets với scanf bên C

Hỉnh Lê viết 19:48 ngày 30/09/2018

Tks bác, cách bác làm hơi mới vs mình, dù sao cũng tks

Bài liên quan
0