为arraylist中的每个项目赋值

时间:2013-01-22 16:07:40

标签: java mysql

我有一个代表一个人的整数的arraylist。我想给每个第四个人分配一个桌子,但是那个arraylist中有超过4个人,所以我想

  • 将接下来的4个人分配到不同的表格和
  • 4人之后到新桌

我该怎么做?

这是我到目前为止所尝试的:

    try {
        String[] toernooi = toernooien2.getSelectedItem().toString().split(" ");

        PreparedStatement stat = con.prepareStatement("SELECT speler FROM fullhouse.inschrijving_toernooi WHERE IT_betaaldatum is not null AND toernooi = ?;");
        stat.setString(1, toernooi[0]);
        ResultSet resultaat = stat.executeQuery();
        ArrayList<Integer> array = new ArrayList<>();

        PreparedStatement stat2 = con.prepareStatement("INSERT INTO fullhouse.indeling (person,tablenumber,ronde) VALUES (?,?,?)");

        for (int i = 1; resultaat.next(); i++) {
            stat2.setInt(1, resultaat.getInt(1));
            array.add(resultaat.getInt(1));
            stat2.execute();

            for (Integer arrayitem : array) 
            {

            }

        }

3 个答案:

答案 0 :(得分:1)

有一个计数器并在迭代时检查计数器,在第四次迭代时将计数器恢复为1并分配给一个新表。

int counter=1;
for(Person p: list){
if(counter==4) {
//assing to a different table
counter=1;
continue;
}
//assign to an normal table
counter++;

}

答案 1 :(得分:1)

您可以使用整数除法来避免担心其他变量或重置。我已经用普通循环替换了迭代器,因为如果我们有一个计数器来计算List,那么使用循环变量似乎更优雅:

private List<Integer> assign (List<Integer> guestList) {

    int size = guestList.size();

    for (int i = 0; i < size; i++) {

        guestList.add(i, i/4);

    }
        return guestList;
}

假设:

  • .size()方法获取来宾数
  • 第一个表号应为零
  • 输入列表的大小不会超出整数除法的范围

这是我的第一个答案 - 感谢评论:)

答案 2 :(得分:0)

你应该在for循环中保留一些计数器。当该计数器达到4时,您应该重置它并相应地更改正在发生的事情。冲洗并重复。我留给你的一些更精细的实现细节,因为很难准确地告诉你如何做和管理一些事情。

int counter = 0;
for (Integer arrayitem : array) 
    {
            counter++;
            assign to table;
            if (counter == 4)
            {
                change what table we are now assigning to;
                counter = 0;
            }
    }