首页 > 解决方案 > Java ArrayList 不断重复值直到数组结束

问题描述

我想使用以下代码循环遍历 ArrayList。我有一个循环,所有参数都显示出来了。但它一直在重复,直到 sql 数据库结束。

ArrayList<Ews> controles = new ArrayList<>(); 
    try {
        Connection conn = DriverManager.getConnection(url, username, password);

        String query = "SELECT * FROM " + database + ".controle";
        java.sql.Statement st = conn.createStatement();
        ResultSet rs = st.executeQuery(query);

        while (rs.next()) {
            int id = rs.getInt("id");
            if (nr == id) {   
                Ews x = new Ews(rs.getString("datum"), rs.getInt("systole"), rs.getInt("diastole"), + 
                rs.getInt("pols"), rs.getDouble("temperatuur"));                 
                controles.add(x);
                Integer i = 1;
                for (Ews controle : controles) {
                    System.out.println(i  + ") " + controle.getDate() + 
                    " - Bloeddruk: " + controle.getSyst() + "/" + controle.getDiast() +
                    " - Pols: " + controle.getPulse() + " - Temperatuur: " + controle.getTemp());
                    i++;
                }
            }
        } 
        
    } catch (Exception e) {
        System.err.println(e.getMessage());
    }
}

我得到了这个结果。

    1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
2)  - Bloeddruk: 130/60 - Pols: 32 - Temperatuur: 38.0
1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
2)  - Bloeddruk: 130/60 - Pols: 32 - Temperatuur: 38.0
3)  - Bloeddruk: 123/60 - Pols: 89 - Temperatuur: 38.0
1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
2)  - Bloeddruk: 130/60 - Pols: 32 - Temperatuur: 38.0
3)  - Bloeddruk: 123/60 - Pols: 89 - Temperatuur: 38.0
4) null - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 36.0
1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
2)  - Bloeddruk: 130/60 - Pols: 32 - Temperatuur: 38.0
3)  - Bloeddruk: 123/60 - Pols: 89 - Temperatuur: 38.0
4) null - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 36.0
5) 24-11-2020 13:12 - Bloeddruk: 120/60 - Pols: 61 - Temperatuur: 36.0
1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
2)  - Bloeddruk: 130/60 - Pols: 32 - Temperatuur: 38.0
3)  - Bloeddruk: 123/60 - Pols: 89 - Temperatuur: 38.0
4) null - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 36.0
5) 24-11-2020 13:12 - Bloeddruk: 120/60 - Pols: 61 - Temperatuur: 36.0
6) 24-11-2020 13:16 - Bloeddruk: 160/61 - Pols: 68 - Temperatuur: 36.0

// And so on...

但我想要这个结果

1)  - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 38.0
2)  - Bloeddruk: 130/60 - Pols: 32 - Temperatuur: 38.0
3)  - Bloeddruk: 123/60 - Pols: 89 - Temperatuur: 38.0
4) null - Bloeddruk: 120/60 - Pols: 60 - Temperatuur: 36.0
5) 24-11-2020 13:12 - Bloeddruk: 120/60 - Pols: 61 - Temperatuur: 36.0
6) 24-11-2020 13:16 - Bloeddruk: 160/61 - Pols: 68 - Temperatuur: 36.0

// and so on...

我希望你们理解我的问题并知道如何解决它:)

标签: javamysqlloopsarraylist

解决方案


将您的 for 循环移到 while 循环之外。

谢谢@GriffeyDog


推荐阅读