• ベストアンサー

Javaによる数数え

たとえば while(rs.next() { int state = rs.getInt("attendance"); attendanceは(-1,0,1)が含まれています。 それで、-1,0,1の数を数えて、それぞれ合計し、 画面に表示したいときはどうしたらいいのでしょうか。 例(-1が2個、0が3個、1が3個の場合) 画面に 2 3 3 初心者ですみません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#33813
noname#33813
回答No.2

JSPでということですので、NO.1の方で仕組みは説明しましたので 画面への出力方法だけ。 <table> <tr><td>欠席</td><td><%= countNum(-1, in)) %></td></tr> <tr><td>未定</td><td><%= countNum(0, in)) %><//td></tr> <tr><td>出席</td><td><%= countNum(1, in)) %><//td></tr> </table>

sinomori
質問者

お礼

ありがとうございます。

その他の回答 (1)

noname#33813
noname#33813
回答No.1

stateの値を全て配列に保持して↓のような処理でカウントを取るのは如何でしょう。 private static int countNum(int v, int[] values) { int cnt = 0; for (int i = 0; i < values.length; i++) { if (values[i] == v) { cnt++; } } return cnt; } 一応、これ使った実装だと↓みたいな感じで。(すごい適当で精査していませんが、正しく動くことは確認しました。) ArrayList list = new ArrayList(); while (rs.next()) { int state = rs.getInt("attendance"); list.add(new Integer(state)); } int[] in = new int[list.size()]; for (int i = 0; i < list.size(); i++) { in[i] = ((Integer)list.get(i)).intValue(); } for (int i = -1; i < 2; i++) { System.out.print(" " + countNum(i, in)); }

sinomori
質問者

補足

早速回答ありがとうございます。 上記のソースはJSPでも使えますよね? たとえば、-1は欠席、0は未定、1は出席 それぞれテーブルの項目に合計値をいれるにはどのようにすればいいですか。

関連するQ&A