Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 10 của 10
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lỗi trong câu lệnh if, so sánh đúng mà kết quả vẫn không trả về

    Đề bài của mình được tóm tắt như sau: cài đặt lớp sinh viên có các thuộc tính: SBD, họ tên, địa chỉ, môn học, điểm kỳ 1, điểm kỳ 2. Viết hàm nhập dữ liệu và các toán tử tạo lập cho lớp sinh viên. VIết chương trình chính tạo danh sách sinh viên và hiển thị bảng chọn ( dùng cấu trúc case) gồm có:
    1. thêm sinh viên
    2. xem thông tin sv
    3. tìm kiếm thông tin theo tên
    4. thoát chương trình
    mình đã code được mã lệnh khá đầy đủ như dưới đây, nhưng có 1 điều vẫn không hiểu là khi chọn "tìm kiếm thông tin sv theo tên", đã nhập đúng tên sinh viên theo danh sách đã tạo lập mà vẫn không thấy trả về kết quả, các bạn có thể thấy đoạn output: mình đã nhập sv có tên "quan" và so sánh đúng theo phương thức Tim(tenSV), out vẫn báo là không tìm thấy sinh viên có tên "quan". Mong các bạn giúp đỡ mình sửa lỗi.! cám ơn các bạn nhiều [IMG]images/smilies/smile.png[/IMG]

    Mã:
    package baitapvenha;import java.util.*;import java.io.*; public class BaiTapVeNha {    public static void main(String[] args) {        SinhVien A [] = new SinhVien[100];        int d = 0;int select;        do{            System.out.println ("Nhập yêu cầu theo số:
     1. Nhập thêm sinh viên
     2. Xem danh sách sinh viên 
     3. Tìm kiếm sinh viên theo tên 
     4. Kết thúc chương trình");            System.out.print("Bạn chọn số:");            Scanner s = new Scanner(System.in);            select = s.nextInt();            switch(select){            case 1:{                System.out.println("Bạn vừa chọn mục thêm sinh viên");                 A[d] = new SinhVien();                A[d].Nhap();d+=1;                break;            }            case 2:{                System.out.println("Bạn vừa chọn mục xem danh sách sinh viên");                System.out.println("Tên Sv\t|SBD\t|ĐịaChỉ\t\t|Môn\t|Điểm1\t|Điểm2");                for (int i = 0;i<d;i++){                A[i].Xem();                }                break;            }            case 3:{                System.out.println("Bạn vừa chọn tìm sinh viên theo tên");                System.out.println("Nhập tên sinh viên cần tìm: ");                Scanner s1 = new Scanner(System.in);                String s2 = s1.nextLine();                System.out.println("Kết quả tìm kiếm theo tên sinh viên: "+s2);                for (int i = 0;i<d;i++){                A[i].Tim(s2);                }break;            }             case 4:            System.out.println("Bạn vừa chọn thoát chương trình");break;            default:            System.out.println("Bạn không chọn gì, Kết thúc chương trình");break;        }         } while (select != 4);     }}class SinhVien{    public String SBD;    public String hoTen;    public String diaChi;    public String monHoc;    public int diemKy1;    public int diemKy2;    public void Nhap(){        System.out.println("Nhập SBD, Họ Tên, Địa Chỉ, Tên Môn Học, Điểm Kỳ 1, Điểm Kỳ 2: = ");        Scanner s = new Scanner(System.in);        SBD = s.nextLine();        hoTen = s.nextLine();        diaChi = s.nextLine();        monHoc = s.nextLine();        diemKy1 = s.nextInt();        diemKy2 = s.nextInt();    }    public void Tim(String tenSV){        if (tenSV==hoTen){            System.out.println("Sinh viên "+ hoTen+" có số báo danh "+SBD+" Địa chỉ tại "+diaChi+"
     Có điểm môn học"+ monHoc+" Kỳ 1 điểm số là "+ diemKy1+" và điểm kỳ 2 là "+ diemKy2);        }        else {            System.out.println("Không tìm thấy kết quả cho sinh viên có tên "+tenSV);        }    }    public void Xem(){        System.out.println(hoTen+"\t|"+SBD+"\t|"+diaChi+"\t\t|"+monHoc+"\t|"+diemKy1+"\t|"+diemKy2);    }}
    Mã:
    run:Nhập yêu cầu theo số: 1. Nhập thêm sinh viên 2. Xem danh sách sinh viên  3. Tìm kiếm sinh viên theo tên  4. Kết thúc chương trìnhBạn chọn số:1Bạn vừa chọn mục thêm sinh viênNhập SBD, Họ Tên, Địa Chỉ, Tên Môn Học, Điểm Kỳ 1, Điểm Kỳ 2: = sv1quanhanoijava79Nhập yêu cầu theo số: 1. Nhập thêm sinh viên 2. Xem danh sách sinh viên  3. Tìm kiếm sinh viên theo tên  4. Kết thúc chương trìnhBạn chọn số:3Bạn vừa chọn tìm sinh viên theo tênNhập tên sinh viên cần tìm: quanKết quả tìm kiếm theo tên sinh viên: quanKhông tìm thấy kết quả cho sinh viên có tên quanNhập yêu cầu theo số: 1. Nhập thêm sinh viên 2. Xem danh sách sinh viên  3. Tìm kiếm sinh viên theo tên  4. Kết thúc chương trìnhBạn chọn số:4Bạn vừa chọn thoát chương trìnhBUILD SUCCESSFUL (total time: 39 seconds)

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    sao ko thấy get set ở đâu hết à [IMG]images/smilies/18.gif[/IMG] thêm vào đi cho đúng oop 1 chút [IMG]images/smilies/1.gif[/IMG]

  3. #3
    Bạn thử sửa lại đoàn này.

    Mã:
      if (tenSV.equalsIgnoreCase(hoTen)){            System.out.println("Sinh viên "+ hoTen+" có số báo danh "+SBD+" Địa chỉ tại "+diaChi+"
     Có điểm môn học"+ monHoc+" Kỳ 1 điểm số là "+ diemKy1+" và điểm kỳ 2 là "+ diemKy2);        }

  4. #4
    Trích dẫn Gửi bởi trungvx
    Bạn thử sửa lại đoàn này.

    Mã:
      if (tenSV.equalsIgnoreCase(hoTen)){            System.out.println("Sinh viên "+ hoTen+" có số báo danh "+SBD+" Địa chỉ tại "+diaChi+"
     Có điểm môn học"+ monHoc+" Kỳ 1 điểm số là "+ diemKy1+" và điểm kỳ 2 là "+ diemKy2);        }
    cám ơn bạn nhiều lắm [IMG]images/smilies/clap_grin.gif[/IMG] mình đã sửa được lỗi rồi, nhưng mình chưa rõ đoạn code này ý nghĩa như thế nào ? mong bạn chỉ rõ hơn chút [IMG]images/smilies/smile.png[/IMG]
    Mã:
    tenSV.equalsIgnoreCase(hoTen)

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi overallstar
    cám ơn bạn nhiều lắm [IMG]images/smilies/clap_grin.gif[/IMG] mình đã sửa được lỗi rồi, nhưng mình chưa rõ đoạn code này ý nghĩa như thế nào ? mong bạn chỉ rõ hơn chút [IMG]images/smilies/smile.png[/IMG]
    Mã:
    tenSV.equalsIgnoreCase(hoTen)
    chịu khó search đi bạn [IMG]images/smilies/waiting.gif[/IMG].
    equalsIgnoreCase >>> phương thức so sánh không phân biệt hoa thường. ex : hello với HEllO vẫn cho là bằng nhau.

    ps : bây giờ mới biết 4rum có box JAVA [IMG]images/smilies/17.gif[/IMG]

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    nhưng tại sao việc so sánh if(hoTen == tenSV) của mình lại không sử dụng được ????

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi overallstar
    nhưng tại sao việc so sánh if(hoTen == tenSV) của mình lại không sử dụng được ????
    == tests for reference equality.

    .equals tests for value equality.

    hiểu rồi chứ ?

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    mình hiểu rồi, cám ơn bạn [IMG]images/smilies/wink.png[/IMG]

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bài không có tính chất bao đóng....

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bài không có tính bao đóng là sao hả bạn? mình mới học Java kì này nên chưa hiểu hết, mong bạn góp ý cho mình.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •