当我使用HTML在Java中创建表时,我的代码有问题。这是我的代码:
for(int station : stations){
String rowcolor = null;
String stationnum = Integer.toString(station);
String lastDate = pollData(station); //CALL GET LAST
String status = determineStatus(station, lastDate); // CALL DETERMINE STATUS
switch(status){
case " ONLINE":
rowcolor = (" <tr bgcolor=\"#5FFF33\">");
break;
case " OFFLINE":
rowcolor = (" <tr bgcolor=\"red\">");
break;
case " DELAYED":
rowcolor = (" <tr bgcolor=\"yellow\">");
break;
}
out.write("<html>" +
"<body>" +
"<table border ='1'>" +
"<tr>" +
"<td>Station Number</td>" +
"<td>Station Name</td>" +
"<td>Status</td>" +
"<td>As of Date</td>" +
"</tr>");
out.write(rowcolor + "<td>");
out.write(stationnum);
out.write("</td><td>");
out.write(stationnname[id]);
out.write("</td><td>");
out.write(status);
out.write("</td><td>");
out.write(lastDate);
out.write("</table>" +
"</body>" +
"</html>");
id++;
out.close();
}
}catch (IOException e) {
System.err.println(e);
}
这是输出:
当我移除out.close();
部分时,输出为:
如您所见,图像在创建表时存在问题。某事不正确,但我找不到解决方法。请帮我;预先感谢。
答案 0 :(得分:3)
看看要写到输出缓冲区的内容和位置。
在for
循环中,您正在编写一个完整的HTML文档(即<html><body>...</body></html>
)和一个包含标题行和一个数据行的整个表。
我假设您想做的就是继续将表行写入一个表。为此,请在您的for
循环
外部处写上上述标记
out.write("<html><body><table border=\"1\"><thead>" +
"<tr><td>Station Number</td><td>Station Name</td>" +
"<td>Status</td><td>As of Date</td></tr></thead><tbody>");
for(int station : stations) {
// get data, determine rowcolor, etc
out.write(rowcolor + ... + "</tr>");
}
out.write("</tbody></table></body></html>");
out.close();
答案 1 :(得分:0)
正如Phil所说,out.close();
在for
循环内,您需要将其更改为for
循环外,因为如果它在循环内,out
将对于第一次迭代将关闭,而对于其他记录将不起作用
for(int station : stations){
}
out.close();