2012-05-15 3 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, а затем проверьте «count% 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>"); 
    } 

Кстати. Создайте отдельный класс Expenses, который содержит 4 поля. Это будет намного чище и проще преобразовать это в 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

зачем вы выводили бесполезную пустую строку в конце? И почему бы не i% 4 == 1? – unbeli

-1

первая вещь: Get arrylist в отдельную переменную, а затем itarate его Еогеасп, вместо вызова Get() и получить (я) несколько раз, затем измените, если состояние

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

вторая вещь: Используйте StringBuilder класс для конкатенации строки вывода, а затем распечатать его с только один out.print

Смежные вопросы