我有一个代表一个人的整数的arraylist。我想给每个第四个人分配一个桌子,但是那个arraylist中有超过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)
{
}
}
答案 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;
}
假设:
这是我的第一个答案 - 感谢评论:)
答案 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;
}
}