我想将db中生成的数据拆分为servlet和DISPLAY IT中的几个表。该表使用演示文稿ID进行组织。例如,我有10个人。我需要为主管和审查员分配相同的availableID。我的系统将确定它们是否具有相似的availableID

我想在管理员单击SAVE按钮并将其插入db之前使用servlet临时显示它。

塞夫莱特:

            for (int i=0; i<studentID.length ; i++) {
            FreeBean free = new FreeBean();
            free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]);

            String SVavailableID = free.getAvailableID();
            String EXavailableID = free.getAvailableID();
            Date FreeDate = free.getFreeDate();

            System.out.println("sv: "+ supervisorID[i] + SVavailableID + " ev: "+ examinerID[i] + EXavailableID);

            if (SVavailableID.equals(EXavailableID))
            {
                if(SVavailableID.equals("2")&& EXavailableID.equals("2")){
                     out.println("<br><center><table><tr>"
                                    + "<th>Name</th>"
                                    + "<th>Title</th>"
                                    + "<th>Supervisor</th>"
                                    + "<th>Examiner Name</th>"
                                    + "<th>availableID</th>"
                                    + "<th>Time </th>"
                                    + "</tr>");
                    out.println("<tr>");

                    out.println("<tr>");
                    out.println("<td>"+ studentID[i]+"</td>");
                    out.println("<td> Hello </td>");
                    out.println("<td>"+ supervisorID[i] +"</td>");
                    out.println("<td>"+ examinerID[i] +"</td>");
                    out.println("<td>"+ SVavailableID+"</td>");
                    out.println("<td>"+ FreeDate+"</td>");
                    out.println("</tr><br>");
                    out.println("</center></table>");
                }//2
                 if(SVavailableID.equals("7")&& EXavailableID.equals("7")){
                     out.println("<br><center><table><tr>"
                                    + "<th>Name</th>"
                                    + "<th>Title</th>"
                                    + "<th>Supervisor</th>"
                                    + "<th>Examiner</th>"
                                    + "<th>availableID </th>"
                                    + "<th>Time</th>"
                                    + "</tr>");
                    out.println("<tr>");

                    out.println("<tr>");
                    out.println("<td>"+ studentID[i]+"</td>");
                    out.println("<td> Hello </td>");
                    out.println("<td>"+ supervisorID[i] +"</td>");
                    out.println("<td>"+ SVavailableID+"</td>");
                    out.println("<td>"+ FreeDate+"</td>");
                    out.println("</tr><br>");
                    out.println("</center></table>");
                }//7
                  if(SVavailableID.equals("10")&& EXavailableID.equals("10")){
                     out.println("<br><center><table><tr>"
                                    + "<th> Name</th>"
                                    + "<th> Title</th>"
                                    + "<th>Supervisor</th>"
                                    + "<th>Examiner</th>"
                                    + "<th>availableID </th>"
                                    + "<th>Time </th>"
                                    + "</tr>");
                    out.println("<tr>");

                    out.println("<tr>");
                    out.println("<td>"+ studentID[i]+"</td>");
                    out.println("<td> Hello </td>");
                    out.println("<td>"+ supervisorID[i] +"</td>");
                    out.println("<td>"+ examinerID[i] +"</td>");
                    out.println("<td>"+ SVavailableID+"</td>");
                    out.println("<td>"+ FreeDate+"</td>");
                    out.println("</tr><br>");
                    out.println("</center></table>");
                }
                   if(SVavailableID.equals("16")&& EXavailableID.equals("16")){
                     out.println("<br><center><table><tr>"
                                    + "<th>Name</th>"
                                    + "<th>Title</th>"
                                    + "<th>Supervisor</th>"
                                    + "<th>Examiner</th>"
                                    + "<th>availableID </th>"
                                    + "<th>Time </th>"
                                    + "</tr>");
                    out.println("<tr>");

                    out.println("<tr>");
                    out.println("<td>"+ studentID[i]+"</td>");
                    out.println("<td> Hello </td>");
                    out.println("<td>"+ supervisorID[i] +"</td>");
                    out.println("<td>"+ examinerID[i] +"</td>");
                    out.println("<td>"+ SVavailableID+"</td>");
                    out.println("<td>"+ FreeDate+"</td>");
                    out.println("</tr><br>");
                    out.println("</center></table>");
                }

            }


但是,我得到这个结果:

    Name        Title   Supervisor  Examiner availableID     Time
    abc         Hello     1024       1001           7        null
    Name        Title   Supervisor  Examiner availableID     Time
    abc         Hello     1024       1001           7        null
    Name        Title   Supervisor  Examiner availableID     Time
    abc         Hello     1024       1001           7        null
    Name        Title   Supervisor  Examiner availableID     Time
    abc         Hello     1024       1001           7        null (so on..)


预期结果将是:

availableID = 7

Name        Title   Supervisor  Examiner availableID     Time
abc         Hello     1024       1001           7        null
def         Hi        1024       1001           7        null
ghi         Hey       1002       1004           7        null
jkl         hhh       1027       1011           7        null
mno         123       1014       1034           7        null


availableID = 10

    Name        Title   Supervisor  Examiner availableID    Time
    pqr         3333      1026       1021           10      null
    stu         4444      1023       1001           10      null
    vwx         5555      1002       1002           10      null
    yz1         6666      1027       1031           10      null
    234         7777      1034       1004           10      null


我该如何解决呢?

最佳答案

首先,您好像要一遍又一遍地重复代码。无论获得什么ID,您都在执行相同的(或相似的)任务。
我建议将可以组合的条件组合在一起,并在可能的情况下编写单个代码块。

所以会是这样的

if (SVavailableID.equals(EXavailableID)){
    if (SVavailableID.equals("7") || SVavailableID.equals("2") || // and so on...) {
        // print students data
   }
}


其次,我会直觉地说您不想为每个学生打印表格标题。
您想事先打印它们,然后遍历学生的array以打印他们的详细信息。因此以下代码片段将超出您的for loop

// outside the for loop
out.println("<br><center><table><tr>"
    + "<th>Name</th>"
    + "<th>Title</th>"
    + "<th>Supervisor</th>"
    + "<th>Examiner</th>"
    + "<th>availableID </th>"
    + "<th>Time</th>"
    + "</tr>");

// now loop through students array and print details here...


最后根据您的输出,由于您不断获得相同的值,因此我认为以下其中一项存在问题:


您正在遍历的数据
您正在遍历studentID数组,但似乎并没有遍历包含要在表上显示的数据的数据结构这一事实(如果您可以弄清楚free表示什么将有所帮助)
for loop中的以下语句。

// most likely they'll have the same value!!
String SVavailableID = free.getAvailableID();
String EXavailableID = free.getAvailableID();



在打印html之前,您正在比较它们的值,但是这些语句为这些ID分配了相同的值;除非您使用getAvailableID()方法实现了某种逻辑,否则它们将不会返回不同的结果。

编辑:我只是读了您对答案的评论,在其中您解释了如何为每个可用ID拥有单独的表

我将尝试草拟一个伪代码算法来做到这一点

// loop through each available ID
for(String ID : availableIdCollection){

    // print table headers here

    // loop through students array
    for(Student s : studentCollection){

        // print students data here
    }
}


您基本上会有两个嵌套的for循环。


在外部循环中,您将遍历可用的ID
在内部循环之前,您将打印表头
打印表格标题后,您需要遍历Student数组并打印每个学生数据

08-28 21:35