HỎI Bị lỗi khi hiển thị thông tin lên bảng sau khi tìm kiếm?

CuDer

New Member
23/4/20
23
0
1
Viet Nam
Đây là code nút tìm kiếm của em
Java:
 private void filtreActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
       DefaultTableModel model1 = new DefaultTableModel();
       for(int i = 0; i < listStudent.size(); i++){
           if((listPlace.get(i).getName()).equals(inputBirthPlace.getText())){
               showResultAfterSearch(i, model1); 
           }
           
           else if((listStudent.get(i).getId())==(Integer.parseInt(inputStudentID.getText()))){
               showResultAfterSearch(i, model1);
           }
           jTable1.setModel(model1);
           jTable1.getModel();
         
       }
     
    }
Đây là hàm hiển thị kết quả tìm kiếm lên bảng
Java:
public void showResultAfterSearch(int i, DefaultTableModel model1){
                String sex;
                if(listStudent.get(i).isSex() == true){
                sex = "Nam";
                }
                else sex = "Nu";
                Object data[] ={
                i+1, listStudent.get(i).getId(), listStudent.get(i).getName(), listPlace.get(i).getName()
                        , listStudent.get(i).getDate(), sex, listStudent.get(i).getMath(), listStudent.get(i).getPhysical()
                        , listStudent.get(i).getChemistry()
                };
                String title[] = {
                "No", "ID", "Name", "Place", "Date", "Sex", "Math", "Physical", "Chemistry"
                };
                model1.setColumnIdentifiers(title);
                model1.addRow(data);
    }
Ví dụ như em nhập 4 sinh viên vào với birthplace = tb, tb, hn, hn và id = 1,2,3,4.Thì khi em nhập vào ô tìm kiếm birthplace là "tb" thì nó tìm được và hiển thị đúng nhưng sau đó em tìm tiếp là "hn" thì nó lại không hiển thị gì lên.Em nhập id thì tìm kiếm ngon lành không bị lỗi gì cả.Em có xóa dòng else if tìm kiếm id đi thì cái birthplace của em tìm kiếm lại ngon.Cho em hỏi sao lại lỗi ở chỗ else if kia vậy ạ?
 

quydtkt

Administrator
1/11/19
365
35
28
26
Bạn nên update full code. Như vậy thì mọi người sẽ dễ dàng giúp bạn hơn
 
  • Like
Reactions: CuDer

CuDer

New Member
23/4/20
23
0
1
Viet Nam
Java:
package QuanLySinhVien;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/*
* 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.
*/

/**
*
* @author admin
*/
public class GiaoDien extends javax.swing.JFrame {

    /**
     * Creates new form GiaoDien
     */
    ArrayList<Student> listStudent;
    ArrayList<BirthPlace> listPlace;
    DefaultTableModel model;
    IOFile f;
    public GiaoDien() {
        initComponents();
        listStudent = new ArrayList<>();
        listPlace = new ArrayList<>();
        model = (DefaultTableModel)jTable1.getModel();
        f = new IOFile();
       
    }
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         


      

    private void textNameActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
    }                                       

    private void textPhysicalActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           

    private void buttonCancelActionPerformed(java.awt.event.ActionEvent evt) {                                            
        System.exit(0);                 // TODO add your handling code here:
    }                                           

    private void textIDActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
    }                                     

    private void inputStudentIDActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
    }                                             

    private void inputBirthPlaceActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
    }                                              

    private void buttonInsertActionPerformed(java.awt.event.ActionEvent evt) {                                            
      
            // TODO add your handling code here:
            addInfoStudent();
            model.setRowCount(0);
            showData();
            f.printStudent(listStudent);
            f.printBirthPlace(listPlace);
        
    }                                           

    private void radioMaleActionPerformed(java.awt.event.ActionEvent evt) {                                         
       // TODO add your handling code here:
    }                                        

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                    
        // TODO add your handling code here:
       
    }                                   
   
    private void buttonEditActionPerformed(java.awt.event.ActionEvent evt) {                                          
            // TODO add your handling code here:
        int index = jTable1.getSelectedRow();
        textID.setText(String.valueOf(model.getValueAt(index, 1)));
        textName.setText((String)(model.getValueAt(index, 2)));
        textBirthPlace.setText((String)(model.getValueAt(index, 3)));
        textDate.setText((String)(model.getValueAt(index, 4)));
        if(model.getValueAt(index, 5) == "Nam"){
            radioMale.setSelected(true);
        }
        else radioFemale.setSelected(true);
        textMath.setText(String.valueOf(model.getValueAt(index, 6)));
        textPhysical.setText(String.valueOf(model.getValueAt(index, 7)));
        textChemistry.setText(String.valueOf(model.getValueAt(index, 8)));
    }                                         
   
    private void buttonDeleteActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
        IOFile f = new IOFile();
        int index = jTable1.getSelectedRow();
        model.removeRow(index);
        listStudent.remove(index);
        listPlace.remove(index);
        f.printStudent(listStudent);
        f.printBirthPlace(listPlace);
    }                                           

    private void filtreActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
       DefaultTableModel model1 = new DefaultTableModel();
       for(int i = 0; i < listStudent.size(); i++){
           if((listPlace.get(i).getName()).equals(inputBirthPlace.getText())){
               showResultAfterSearch(i, model1);
           }
          
           else if((listStudent.get(i).getId())==(Integer.parseInt(inputStudentID.getText()))){
               showResultAfterSearch(i, model1);
           }
           else {
               JOptionPane.showConfirmDialog(this, "Not found");
           }
           jTable1.setModel(model1);
           jTable1.getModel();
        
       }
    
    }                                     

    private void buttonOkActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        int index = jTable1.getSelectedRow();
        Student s = new Student();
        BirthPlace b = new BirthPlace();
        s.setId(Integer.parseInt(textID.getText()));
        s.setName(textName.getText());
        b.setName(textBirthPlace.getText());
        s.setDate(textDate.getText());
        s.setMath(Float.parseFloat(textMath.getText()));
        s.setPhysical(Float.parseFloat(textPhysical.getText()));
        s.setChemistry(Float.parseFloat(textChemistry.getText()));
        if(radioMale.isSelected()){
            s.setSex(true);
        }
        else s.setSex(false);
        listStudent.set(index, s);
        listPlace.set(index, b);
        f.printStudent(listStudent);
        f.printBirthPlace(listPlace);
        model.setRowCount(0);
        showData();
      
    }                                       

    public void addInfoStudent(){
        int i = 0;
        Student s = new Student();
        BirthPlace b = new BirthPlace();
        s.setId(Integer.parseInt(textID.getText()));
        s.setName(textName.getText());
        b.setName(textBirthPlace.getText());
        s.setDate(textDate.getText());
        s.setMath(Float.parseFloat(textMath.getText()));
        s.setPhysical(Float.parseFloat(textPhysical.getText()));
        s.setChemistry(Float.parseFloat(textChemistry.getText()));
        if(radioMale.isSelected()){
            s.setSex(true);
        }
        else s.setSex(false);
        listStudent.add(s);
        listPlace.add(b);
    }
  
    public void showData(){
        int c = 1;
            String sex;
            for(int i = 0; i < listPlace.size(); i++){
                if(listStudent.get(i).isSex() == true){
                sex = "Nam";
                }
                else sex = "Nu";
                model.addRow(new Object[]{
                c++, listStudent.get(i).getId(),  listStudent.get(i).getName(), listPlace.get(i).getName()
                        , listStudent.get(i).getDate(), sex, listStudent.get(i).getMath(), listStudent.get(i).getPhysical()
                        , listStudent.get(i).getChemistry()
                });
            }
    }
    public void showResultAfterSearch(int i, DefaultTableModel model1){
                String sex;
                if(listStudent.get(i).isSex() == true){
                sex = "Nam";
                }
                else sex = "Nu";
                Object data[] ={
                i+1, listStudent.get(i).getId(), listStudent.get(i).getName(), listPlace.get(i).getName()
                        , listStudent.get(i).getDate(), sex, listStudent.get(i).getMath(), listStudent.get(i).getPhysical()
                        , listStudent.get(i).getChemistry()
                };
                String title[] = {
                "No", "ID", "Name", "Place", "Date", "Sex", "Math", "Physical", "Chemistry"
                };
                model1.setColumnIdentifiers(title);
                model1.addRow(data);
    }
   
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(GiaoDien.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(GiaoDien.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(GiaoDien.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(GiaoDien.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GiaoDien().setVisible(true);
            }
        });
    }
Full code của em đây nhưng em chỉ bị lỗi chỗ else if ở cái chỗ bắt sự kiện nút filter thôi ạ.Lỗi em nói ở trên rồi đấy ạ.
 
Sửa lần cuối:

Joe

Thành viên VIP
21/1/13
2,935
1,304
113
I ask you for the
or Exception messages so that I can say what errors you have made. The codes you posted can NOT work because some modules are missing for a reproduction of the lỗi. Have you problems with my asking in English?

"Ban phai cho toi biet cai LOI la gi de toi co the doan ra nhung loi ban da lam. Codes ban dang len khong chay duoc boi vi thieu modules de cho toi xem la loi gi khi no chay"
 

Joe

Thành viên VIP
21/1/13
2,935
1,304
113
I asked you about the errors you sent me a package. But it's good so. You make too many programming mistakes that I showed you below:

1) Scanner used in IOFile.java. Scanner works with file is similar with System.in. It separates the read-Operation after BLANK or NewLine (\r\n on Windows or \n on Linux). Click HERE to learn more about Scanner. Further, you have to check for the existence of a file before you start to read it. Otherwise you get FileNotFoundException. The 1st sc.nextLine() gives back the entire record containing, for example, "12; Joe, 0, 11.11.2000, true, 1.0, 1.0, 1.0" and that causes NumberFormatException to the statement s.setId(Integer.parseInt(sc.nextLine())); Correction must be done as following

Java:
    public void printStudent(ArrayList<Student> listStudent){
        try {
            FileOutputStream fos = new FileOutputStream("ThiSinh.txt");
            try (PrintWriter pw = new PrintWriter(fos)) {
                for(Student s: listStudent){
                    pw.print(s.getId());
                    pw.print(", "+s.getName());         // <-- use COMMA for the commonness
                    pw.print(", "+s.getIdPlace());
                    pw.print(", "+s.getDate());
                    pw.print(", "+s.isSex());
                    pw.print(", "+s.getMath());
                    pw.print(", "+s.getPhysical());
                    pw.print(", "+s.getChemistry());
                    pw.println();                   
                }
                 pw.close();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(IOFile.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public ArrayList<Student> readStudent(){ // missing Student
        ArrayList<Student> listStudent = new ArrayList<>();
        // check for existing
        if (!(new File("ThiSinh.txt")).exists()) {
          try {
            FileOutputStream fos = new FileOutputStream("ThiSinh.txt", false); // create if no
            fos.close();
          } catch (Exception ex) {}
        } else try {
            FileInputStream fis = new FileInputStream("ThiSinh.txt");
            Scanner sc = new Scanner(fis);
            while(sc.hasNextLine()){
                Student s = new Student();

                String[] items = sc.nextLine().split(",");             //<-- read the record and split to array

                s.setId(Integer.parseInt(items[0].trim())); 
                s.setName(items[1].trim());  
                s.setIdPlace(Integer.parseInt(items[2].trim()));
                s.setDate(items[3].trim());
                s.setSex("true".equalsIgnoreCase(items[4].trim()));
                s.setMath(Float.parseFloat(items[5].trim()));
                s.setPhysical(Float.parseFloat(items[6].trim()));
                s.setChemistry(Float.parseFloat(items[7].trim()));
                listStudent.add(s);
            }
            sc.close();
                
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listStudent;
    }
    public void printBirthPlace(ArrayList<BirthPlace> listPlace){
        try {
            FileOutputStream fos = new FileOutputStream("QueQuan.txt");
            try (PrintWriter pw = new PrintWriter(fos)) {
                for(BirthPlace b: listPlace){
                    pw.print(b.getName());
                    pw.print(", "+b.getId());
                    pw.println();                 
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(IOFile.class.getName()).log(Level.SEVERE, null, ex);
        }
                
    }
    public ArrayList<BirthPlace> readPlace(){
        ArrayList<BirthPlace> listPlace = new ArrayList<>();
        // check for existing
        if (!(new File("QueQuan.txt")).exists()) {
          try {
            FileOutputStream fos = new FileOutputStream("QueQuan.txt", false); // create if no
            fos.close();
          } catch (Exception ex) {}
        } else try {
            FileInputStream fis = new FileInputStream("QueQuan.txt");
            Scanner sc = new Scanner(fis);
            while(sc.hasNext()){
              String[] items = sc.nextLine().split(",");
              BirthPlace b = new BirthPlace();
              b.setId(Integer.parseInt(items[1].trim()));
              b.setName(items[0].trim());
              listPlace.add(b);
            }
              sc.close();
                
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listPlace;
    }
    
}
2) The GiaoDien.java lacks the verifications of Input-Field and Conversion. An empty string will cause NumberFormatException or IndexOutOfBoundsException. The codes must be modified at the reading of the JTextFields or JTable fields:

Java:
....
    private void buttonOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonOkActionPerformed
        // TODO add your handling code here:
        int index = jTable1.getSelectedRow();
        Student s = new Student();
        BirthPlace b = new BirthPlace();
        String txt = textID.getText();
        if (txt.length()==0) {                                      // check for empty field
          System.out.println("ID must be given");
          return;
        }
        s.setId(Integer.parseInt(txt));            // OK
        s.setName(textName.getText());
        b.setName(textBirthPlace.getText());
        s.setDate(textDate.getText());
        // should do the checks, too for Float
        s.setMath(Float.parseFloat(textMath.getText()));
        s.setPhysical(Float.parseFloat(textPhysical.getText()));
        s.setChemistry(Float.parseFloat(textChemistry.getText()));
        if(radioMale.isSelected()){
            s.setSex(true);
        }
        else s.setSex(false);

        if (index >= 0 && index < listStudent.size()) {  // check for negative or overrun index
          listStudent.set(index, s);
          listPlace.set(index, b);
        } else {
          listStudent.add(s);
          listPlace.add(b);
        }
        f.printStudent(listStudent);
        f.printBirthPlace(listPlace);
        model.setRowCount(0);
        showData(); 
       
    }//GEN-LAST:event_buttonOkActionPerformed
   ...
}
Remember, as a newbie you code a large project and when you get problems you have to post the codes so that people like me can help you.
Joe

PS: you can upload your ZIP file using the button "Attach Files"
upload.png
 
Sửa lần cuối:
  • Like
Reactions: CuDer

CuDer

New Member
23/4/20
23
0
1
Viet Nam
I asked you about the errors you sent me a package. But it's good so. You make too many programming mistakes that I showed you below:

1) Scanner used in IOFile.java. Scanner works with file is similar with System.in. It separates the read-Operation after BLANK or NewLine (\r\n on Windows or \n on Linux). Click HERE to learn more about Scanner. Further, you have to check for the existence of a file before you start to read it. Otherwise you get FileNotFoundException. The 1st sc.nextLine() gives back the entire record containing, for example, "12; Joe, 0, 11.11.2000, true, 1.0, 1.0, 1.0" and that causes NumberFormatException to the statement s.setId(Integer.parseInt(sc.nextLine())); Correction must be done as following
Java:
[/COLOR]
    public void printStudent(ArrayList<Student> listStudent){
        try {
            FileOutputStream fos = new FileOutputStream("ThiSinh.txt");
            try (PrintWriter pw = new PrintWriter(fos)) {
                for(Student s: listStudent){
                    pw.print(s.getId());
                    pw.print(", "+s.getName());         // <-- use COMMA for the commonness
                    pw.print(", "+s.getIdPlace());
                    pw.print(", "+s.getDate());
                    pw.print(", "+s.isSex());
                    pw.print(", "+s.getMath());
                    pw.print(", "+s.getPhysical());
                    pw.print(", "+s.getChemistry());
                    pw.println();                   
                }
                 pw.close();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(IOFile.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public ArrayList<Student> readStudent(){ // missing Student
        ArrayList<Student> listStudent = new ArrayList<>();
        // check for existing
        if (!(new File("ThiSinh.txt")).exists()) {
          try {
            FileOutputStream fos = new FileOutputStream("ThiSinh.txt", false); // create if no
            fos.close();
          } catch (Exception ex) {}
        } else try {
            FileInputStream fis = new FileInputStream("ThiSinh.txt");
            Scanner sc = new Scanner(fis);
            while(sc.hasNextLine()){
                Student s = new Student();

                String[] items = sc.nextLine().split(",");             //<-- read the record and split to array

                s.setId(Integer.parseInt(items[0].trim())); 
                s.setName(items[1].trim());  
                s.setIdPlace(Integer.parseInt(items[2].trim()));
                s.setDate(items[3].trim());
                s.setSex("true".equalsIgnoreCase(items[4].trim()));
                s.setMath(Float.parseFloat(items[5].trim()));
                s.setPhysical(Float.parseFloat(items[6].trim()));
                s.setChemistry(Float.parseFloat(items[7].trim()));
                listStudent.add(s);
            }
            sc.close();
                
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listStudent;
    }
    public void printBirthPlace(ArrayList<BirthPlace> listPlace){
        try {
            FileOutputStream fos = new FileOutputStream("QueQuan.txt");
            try (PrintWriter pw = new PrintWriter(fos)) {
                for(BirthPlace b: listPlace){
                    pw.print(b.getName());
                    pw.print(", "+b.getId());
                    pw.println();                 
                }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(IOFile.class.getName()).log(Level.SEVERE, null, ex);
        }
                
    }
    public ArrayList<BirthPlace> readPlace(){
        ArrayList<BirthPlace> listPlace = new ArrayList<>();
        // check for existing
        if (!(new File("QueQuan.txt")).exists()) {
          try {
            FileOutputStream fos = new FileOutputStream("QueQuan.txt", false); // create if no
            fos.close();
          } catch (Exception ex) {}
        } else try {
            FileInputStream fis = new FileInputStream("QueQuan.txt");
            Scanner sc = new Scanner(fis);
            while(sc.hasNext()){
              String[] items = sc.nextLine().split(",");
              BirthPlace b = new BirthPlace();
              b.setId(Integer.parseInt(items[1].trim()));
              b.setName(items[0].trim());
              listPlace.add(b);
            }
              sc.close();
                
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listPlace;
    }
    
}
2) The GiaoDien.java lacks the verifications of Input-Field and Conversion. An empty string will cause NumberFormatException or IndexOutOfBoundsException. The codes must be modified at the reading of the JTextFields or JTable fields:
Java:
....[/COLOR]
    nút void privateOkActionPerformed (java.awt.event.ActionEvent evt) {// GEN-FIRST: event_buttonOkActionPerformed
        // TODO thêm mã xử lý của bạn vào đây:
        int index = jTable1.getSelectedRow ();
        Sinh viên s = Sinh viên mới ();
        BirthPlace b = new BirthPlace ();
        Chuỗi txt = textID.getText ();
        if (txt.length () == 0) {// kiểm tra trường trống
          System.out.println ("Phải cung cấp ID");
          trở về;
        }
        s.setId (Integer.parseInt (txt)); // ĐỒNG Ý
        s.setName (textName.getText ());
        b.setName (textBirthPlace.getText ());
        s.setDate (textDate.getText ());
        // nên thực hiện kiểm tra, quá cho Float
        s.setMath (Float.parseFloat (textMath.getText ()));
        s.setPhysical (Float.parseFloat (textPhysical.getText ()));
        s.setChemology (Float.parseFloat (textChemology.getText ()));
        if (radioMale.isSelected ()) {
            s.setflix (đúng);
        }
        khác s.setflix (sai);

        if (index> = 0 && index <listStudent.size ()) {// kiểm tra chỉ số âm hoặc tràn
          listStudent.set (index, s);
          listPlace.set (index, b);
        } khác {
          listStudent.add (s);
          listPlace.add (b);
        }
        f.printStudent (listStudent);
        f.printBirthPlace (Danh sách địa điểm);
        model.setRowCount (0);
        showData (); 
       
    } // GEN-LAST: event_buttonOkActionPerformed
   ...
}
[/ mã]
Hãy nhớ rằng, là một người mới, bạn viết mã cho một dự án lớn và khi bạn gặp vấn đề, bạn phải đăng mã để những người như tôi có thể giúp bạn.
Joe

PS: bạn có thể tải lên tệp ZIP của mình bằng nút "Đính kèm tệp"
[ATTACH type="full" alt="upload.png"]2186[/ATTACH][/COLOR][/COLOR]
[/TRÍCH DẪN]
Cảm ơn anh ạ.Anh có thể kiểm tra phần nút filter của em được không ạ.Em đang bị vướng chỗ tìm kiếm đó.
Em có listStudent (chứa thông tin ID của từng sinh viên, bao gồm các record {1, 2, 3, 4}) và listPlace (chứa thông tin birthplace của từng sinh viên, bao gồm các record {tb, tb, hn, hn}).
Trên giao diện, em có 2 ô tìm kiếm:
[LIST]
[*]Ô tìm kiếm bằng student ID (biến inputStudentID)
[*]Ô tìm kiếm bằng birthplace (biến inputBirthPlace)
[/LIST]
Em gặp vấn đề sau đây:
[LIST]
[*]Khi nhập tìm kiếm birthplace với giá trị “tb”, kết quả trả về là {1, tb}, {2, tb} đúng với kỳ vọng.
[*]Khi nhập tìm kiếm birthplace với giá trị “hn”, kết quả trả về là {} (kỳ vọng là {3, hn}, {4, hn})
[*]Khi nhập tìm kiếm id với giá trị “1”, kết quả trả về là {1, tb} đúng với kỳ vọng.Id thì tìm như thế nào nó vẫn ra cho em kết quả đúng.
[*]Khi em xoá khối else if đi, và tìm kiếm birthplace với giá trị “hn”, kết quả trả về là {3, hn}, {4, hn} đúng với kỳ vọng.
[/LIST]
 

quydtkt

Administrator
1/11/19
365
35
28
26
Java:
 private void filtreActionPerformed(java.awt.event.ActionEvent evt) {                                     
    //
        
           else if((listStudent.get(i).getId())==(Integer.parseInt(inputStudentID.getText()))){
//
  
    }
Vấn đề bạn hỏi nằm ở đây, cần kiểm tra inputStudentID.getText() phải không null, không rỗng và phải là số trước khi gọi lệnh Integer.parseInt để tránh java.lang.NumberFormatException do giá trị truyền vào hàm parse không phải là số.
Ngoài ra, code của bạn còn sai khá nhiều chỗ. Tham khảo comment của Joe để fix nhé