2016-05-11 2 views
0

問題交換するか、非表示:サーブレットで同様の値

私はそれが監督と審査官のavailabilityIDと一致するデータベースから値を取得しています。ただし、これら2つの間で一致するavailabilityIDがない場合、availabilityIDはデフォルトで0になります。

私はサーブレット内で条件を作成しました。どちらの場合もavailabilityIDが0の場合は、クエリで選択した数値に置き換えます。私のサーブレットの

一部:

for (int i=0 ; i<studentID.length ; i++){ 

    FreeBean free = new FreeBean(); 

    free = GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i]); 

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


    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>"+ EXavailableID+"</td>"); 
    out.println("<td>"+ FreeDate+"</td>"); 
    out.println("</tr>"); 

    if (SVavailableID ==0 && EXavailableID ==0) 
    { 

     free= GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i]); 

     int otherSVavailableID = free.getAvailableID(); 
     int otherEXavailableID = free.getAvailableID(); 

     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>"+ otherSVavailableID+"</td>"); 
     out.println("<td>"+ otherEXavailableID+"</td>"); 
     out.println("<td>"+ FreeDate+"</td>"); 
     out.println("</tr>"); 

    } 

}// student loop 

私は私の結果は、このようなことが判明承知しています:

Student Name | Project Title | Supervisor Name | Examiner Name | Presentation 1 | Presentation 2 | Date 

    abc   1111    tan    tin    0     0   1/1/16 
    abc   1111    tan    tin    12     12   1/1/16 

最初の行を示し、監督と審査官の両方のためのavailabilityIDは0です。したがって、IF文を実行し、別の可能性のある文を見つけます。availabilityID結果として、0と1からなる行が新しい値で構成される行が複製されます。

行を0と新しい値で置き換えるにはどうすればよいですか。または、少なくとも、少なくとも0,= 0の行を非表示にし、検索された新しい値で表示します。効率的な方法はありますか?

答えて

0

あなたがする必要があるのは、論理の流れが1つだけであることを確かめることです。適切な場所にifステートメントを使用すると、それを実現できます。

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

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

    // handle the edge case here 
    if (SVavailableID == 0 && EXavailableID == 0) { 
     free = GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i]); 

     SVavailableID = free.getAvailableID(); 
     EXavailableID = free.getAvailableID(); 
    } 

    // now print out each record only one time 
    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>"+ EXavailableID+"</td>"); 
    out.println("<td>"+ FreeDate+"</td>"); 
    out.println("</tr>"); 
} 

もう1つの方法で問題にアプローチすると、SQLクエリで2つのゼロ値が処理されます。

+0

ありがとうございます!私は本当に私のロジックに取り組む必要があります.. – user6308605