2012-05-15 95 views
1

如何将我的arraylist检索到html表中?将arraylist转换为html表

我的ArrayList:

[ 
1, 2011-05-10, 1, 22.0, 
2, 2011-05-10, 2, 5555.0, 
3, 2011-05-11, 3, 123.0, 
4, 2011-05-11, 2, 212.0, 
5, 2011-05-30, 1, 3000.0, 
6, 2011-05-30, 1, 30.0, 
7, 2011-06-06, 1, 307.0, 
8, 2011-06-06, 1, 307.0 ] 

out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Counter</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<table border=\"1\">"); 
     out.println("<tr>"); 
     for (int i = 0; i < ex.getExpenses().size(); i++) { 
      out.println("<td>" + ex.getExpenses().get(i) + "</td>"); 

      if (i>0 && i%4==0) { 
       out.println("</tr><tr>"); 

      } 

     } 
     out.println("</tr>"); 
     out.println("</table>"); 
     out.println("</body>"); 
     out.println("</html>"); 

这并没有真正的工作,因为ArrayList中以0开始,它让我看起来像这样的表:enter image description here

请问如何看起来表像这样:

1 2011-05-10 1 22.0 
2 2011-05-10 2 5555.0 
3 2011-05-11 3 123.0 
4 2011-05-11 2 212.0 
5 2011-05-30 1 3000.0 
6 2011-05-30 1 30.0 
7 2011-06-06 1 307.0 
8 2011-06-06 1 307.0 
+1

使用一个单独的计数器变量 - 初始化它在1然后检查'计数%4 = 0' – ManseUK

+2

或调整条件以绘制一个新行:if(i> 0 &&(i + 1)%4 == 0 ){ –

+0

你能告诉我我在哪里初始化它在代码中,并通过它循环,因为我试过了,我得到的是一张凌乱的表 – Gipsy

回答

3

更换

for (int i = 0; i < ex.getExpenses().size(); i++) { 
     out.println("<td>" + ex.getExpenses().get(i) + "</td>"); 
     if (i>0 && i%4==0) { 
      out.println("</tr><tr>"); 
     } 
    } 

for (int i = 0; i < ex.getExpenses().size(); i++) { 
     if (i>0 && i%4==0) { 
      out.println("</tr><tr>"); 
     } 
     out.println("<td>" + ex.getExpenses().get(i) + "</td>"); 
    } 

顺便说。创建包含4个字段的独立类Expenses。将它转换为html会更简单和容易。您可以编写特殊的单独方法将Expenses转换为html表格行。

0

更改i(i+1)

[ 
1, 2011-05-10, 1, 22.0, 
2, 2011-05-10, 2, 5555.0, 
3, 2011-05-11, 3, 123.0, 
4, 2011-05-11, 2, 212.0, 
5, 2011-05-30, 1, 3000.0, 
6, 2011-05-30, 1, 30.0, 
7, 2011-06-06, 1, 307.0, 
8, 2011-06-06, 1, 307.0 ] 

out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Counter</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<table border=\"1\">"); 
     out.println("<tr>"); 
     for (int i = 0; i < ex.getExpenses().size(); i++) { 
      out.println("<td>" + ex.getExpenses().get(i) + "</td>"); 

      if (i>0 && (i+1)%4==0) { 
       out.println("</tr><tr>"); 

      } 

     } 
     out.println("</tr>"); 
     out.println("</table>"); 
     out.println("</body>"); 
     out.println("</html>"); 
+0

+1表示条件,但是i> 0现在无用 – Kousalik

+0

为什么你会在最后输出无用的空行?为什么不是%4 == 1? – unbeli

-1

第一件事: 获取arrylist成独立的变量,然后用foreach itarate它,而不是调用get()和get(我)多次,然后换你的,如果条件

if ((i+1)%4==0) { 
      out.println("</tr><tr>"); 
    } 
秒件事: 使用 StringBuilder类来连接输出字符串,则只有一个 out.print打印