【问题标题】:Java ArrayList keeps repeating values till end of arrayJava ArrayList 不断重复值直到数组结束
【发布时间】:2021-03-07 11:14:53
【问题描述】:

我想使用以下代码循环遍历 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...

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

【问题讨论】:

  • 您能否在您的代码中添加nr 以及为什么使用 i 作为增量变量?
  • for 循环移出while 循环。
  • nr 是需要和ID相等的变量。我想根据他的 ID 显示患者(在医院)的一些结果。 nr 在方法中被声明为参数。我作为增量是为了给结果一个数字(只是阅读简单)@ GriffeyDog,谢谢。那行得通,我以为我什么都试过了,猜不出来,谢谢

标签: java mysql loops arraylist


【解决方案1】:

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

感谢@GriffeyDog

【讨论】:

    【解决方案2】:

    问题是你建立你的列表然后迭代它。您需要先完成列表的构建,然后使用输出进行迭代。

    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++;
    }
    

    以上内容纯粹回答了您的循环问题,希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 2014-09-20
      • 1970-01-01
      • 2013-05-05
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      相关资源
      最近更新 更多