1

指定された数の列にできるだけ均等に広がる HTML テーブルに表示したい文字列のリストがあります。

public String toHtmlTable(Collection<String> values, int columns) {
    // TODO
}

文字列を次のように表示したい:

A    E    I
B    F    J
C    G
D    H

(i.e. "<table><tr><td>A</td><td>E</td><td>I</td></tr>...</table>")

私はこれをしたくない:

A    B    C
D    E    F
G    H    I
J

それを行う良い方法は何ですか?

4

2 に答える 2

2

いくつかのコードは助けになるかもしれません:

私は少し怠け者です.2つのことはまだ行われていません:

  • タグは<table></table>追加されません。かんたんだよ。
  • <td></td>は処理されませんでした。

コード:

public void tt() {
    // you could ignore the ImmutableList stuff, it just prepares the string list, nothing more.
    final List<String> l = ImmutableList.of("a", "b", "c", "d", "e", "f", "g", "h", "i", "j");
    final int col = 3;
    final int size = l.size();
    final int n = size / col;
    final StringBuffer sb = new StringBuffer("");
    for (int i = 0; i <= n; i++) {
        int k = i;
        sb.append("<tr>\n");
        while (k < size) {
            sb.append("<td>" + l.get(k) + "</td>");
            k += n + 1;
        }
        sb.append("\n</tr>\n");
    }
    System.out.println(sb.toString());
}

出力:

<tr>
<td>a</td><td>e</td><td>i</td>
</tr>
<tr>
<td>b</td><td>f</td><td>j</td>
</tr>
<tr>
<td>c</td><td>g</td>
</tr>
<tr>
<td>d</td><td>h</td>
</tr>
于 2012-08-01T12:43:02.483 に答える
0

nテーブルに列があり、文字列の数があると仮定すると、x最終的に必要になります

m = ceiling(x/n)行。したがって、html の行を出力するときは、それに応じて変数をオフセットするだけです。出力の最初の行は次のようになります。

arr[0]    arr[m]        arr[2m]        arr[3m]      ....     arr[nm]

次の行は次のようになります。

arr[1]    arr[m+1]      arr[2m+1]      arr[3m+1]    ....     arr[nm+1]
arr[2]    arr[m+2]      arr[2m+2]      arr[3m+2]    ....     arr[nm+2]
....
arr[m-1]  arr[2m-1]     arr[3m-1]      arr[4m-11]   ....     arr[(n+1)m-1]

ネストされたループをコーディングしてこれを出力する方法を理解できます。それほど難しくありません。

各行は次のように表されます。

arr[i]    arr[m+i]      arr[2m+i]      arr[3m+i]    ....     arr[nm+i]

iから0へと進み(m-1)ます。

これが役立つことを願っています。

于 2012-08-01T11:19:12.673 に答える