0

人を表す整数の配列リストがあります。4人ごとにテーブル番号を割り当てたいのですが、その配列リストには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) 
            {

            }

        }
4

3 に答える 3

1

整数除算を使用すると、他の変数やリセットについて心配する必要がなくなります。とにかくリストをカウントアップするためのカウンターがある場合は、ループ変数を使用する方がエレガントなように見えるため、イテレーターを通常のループに置き換えました。

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()メソッドはゲストの数を取得します
  • 最初のテーブル番号はゼロである必要があります
  • 入力リストのサイズは整数除算の範囲外にはなりません

これが私の最初の答えです-コメントは大歓迎です:)

于 2013-01-22T16:55:35.353 に答える
1

カウンターを持ち、反復中にカウンターをチェックし、4回目の反復でカウンターを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++;

}
于 2013-01-22T16:10:59.613 に答える
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;
            }
    }
于 2013-01-22T16:10:23.747 に答える