有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从数据库中获取信息并将其写入JTable。错误:java。lang.IndexOutOfBoundsException:索引:2,大小:2

我试图从数据库中创建一个“用户”列表,并将其添加到我的JTable中

我收到了错误信息:

"java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
    at java.util.ArrayList.rangeCheck(Unknown Source)
    at java.util.ArrayList.get(Unknown Source)
    at Administration.User_Verwalten.show_user(User_Verwalten.java:83)
    at Administration.User_Verwalten.<init>(User_Verwalten.java:189)
    at Administration.User_Verwalten$1.run(User_Verwalten.java:62)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)"

我已经查看了ArrayList,但没有发现任何错误。我已经读过一篇关于这个错误消息的帖子,其中错误在for循环中,但这里for循环是正确的。 以下是代码:

ArrayList <User> list = connect.getAllFromUserAsUser();
            DefaultTableModel model1 = (DefaultTableModel) tableUsers.getModel();
            Object [] row = new Object[7];
            for (int i=0; i<=list.size();i++) {
            row [0] = list.get(i).getID();
            row [1] = list.get(i).getBenutzername();
            row [2] = list.get(i).getPasswort();
            row [3] = list.get(i).getName();
            row [4] = list.get(i).getVorname();
            row [5] = list.get(i).getGeburtsdatum();
            row [6] = list.get(i).isIstWirt();
            model1.addRow(row);
            }



public ArrayList<User> getAllFromUserAsUser() throws SQLException { //prüft ob eingegebene LoginID in DB ist
        ArrayList <User> All = new ArrayList <User>(); 
        try {
            String query = "select ID,Benutzername,Passwort,Name,Vorname,Geburtsdatum,IstWirt from user";
            rs= st.executeQuery(query);
            User user;
            while (rs.next()) {
                user= new User(rs.getInt("ID"), rs.getString("Benutzername"), rs.getString("Passwort"),rs.getString("Name"),
                        rs.getString("Vorname"),rs.getDate("Geburtsdatum"),rs.getBoolean("IstWirt"));

                All.add(user);
                }
        }
        catch(Exception e) {
            System.out.println(e);
        }
        finally {
            if (rs!=null) {rs.close();
            }
        }
        return All;

    }

共 (1) 个答案

  1. # 1 楼答案

    我认为问题在于for循环条件i<=list.size();i++) 如果数组大小为4,那么最多需要4次迭代,例如i=0,1,2,3。这是4次迭代,所以停止条件是数组的大小-1。 for循环应该是for (int i=0; i<list.size();i++) {