将零提取行传递给另一个条件

时间:2016-05-18 01:08:01

标签: java

这是我的servlet:

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

    System.out.println("studentID: "+ studentID[i]);

    FreeBean free = new FreeBean();
    PresentationBean present = new PresentationBean();
    StudentBean student = new StudentBean();

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

    List<Object[]> list = (List<Object[]>) GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i],studentID[i]);
    Object[] array = null;
    for (int k = 0; k < list.size(); k++) {

    array = (Object[])(list.get(k));
    System.out.println("tryy "+ k);
    for (int j = 0; j < array.length; j++) {

       System.out.println("try "+ j + "and "+ array[j]);
       System.out.println("apa ni" + array[7]);
    }// iterate over the Object array
   } // iterate k  

   String studentName = (String) array[7]; // I am getting NPE here
   String projectTitle = (String) array[8];
   String SVName = (String) array[11];
   String EXName = (String) array[13];
   String day = (String) array[15];
   Time start = (Time) array[16];
   Time end = (Time) array[17];
   Date date = (Date) array[3];

   if ( studentName== null ) {

   list = (List<Object[]>) GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i],studentID[i]);

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

   studentName = (String) array[15];
   projectTitle = (String) array[17];
   SVName = (String) array[12];
   EXName = (String) array[14];
   day = (String) array[5];
   start = (Time) array[6];
   end = (Time) array[7];
   date = (Date) array[10];
   }//if takde masa yang sama

 out.println("<tr>");
 out.println("<td>"+ studentName+"</td>");
 out.println("<td>"+ projectTitle +"</td>");
 out.println("<td>"+ SVName +"</td>");
 out.println("<td>"+ EXName +"</td>");
 out.println("<td>"+ day +"</td>");
 out.println("<td>"+ start +"</td>");
 out.println("<td>"+ end+"</td>");
 out.println("<td>"+ date+"</td>");
 out.println("</tr>");       
 }//student loop

根据以上代码,GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i],studentID[i])会传递DAO中的值以匹配supervisorIDexaminerID availabilityID

在某些情况下,supervisorIDexaminerID不会有相同的availabilityID。因此,我想用if条件来处理它。它将在String studentName = (String) array[7];上返回NPE,因为在DB中,提取了ZERO行。这就是它进入NPE的原因。

我的想法是通过if ( studentName== null )处理它。它将使用审查员的availableID作为替代,但它没有成功。它将永远返回NPE。它甚至没有通过if条件。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

在假设array包含值之前,您需要检查结果集的大小:

// declarations
String studentName;
String projectTitle;
String SVName;
String EXName;
String day;
Time start;
Time end;
Date date;

List<Object[]> list = (List<Object[]>) GenerateScheduleDAO.getFree(supervisorID[i],examinerID[i],studentID[i]);
if (!list.isEmpty() {
    for (int k = 0; k < list.size(); k++) {

    array = (Object[])(list.get(k));
    System.out.println("tryy "+ k);
    for (int j = 0; j < array.length; j++) {

       System.out.println("try "+ j + "and "+ array[j]);
       System.out.println("apa ni" + array[7]);
    }// iterate over the Object array
   } // iterate k  

   studentName = (String) array[7];
   projectTitle = (String) array[8];
   SVName = (String) array[11];
   EXName = (String) array[13];
   day = (String) array[15];
   start = (Time) array[16];
   end = (Time) array[17];
   date = (Date) array[3];
} else {
   list = (List<Object[]>) GenerateScheduleDAO.getOtherFree(supervisorID[i],examinerID[i],studentID[i]);
   array = (Object[])(list.get(k));

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

   studentName = (String) array[15];
   projectTitle = (String) array[17];
   SVName = (String) array[12];
   EXName = (String) array[14];
   day = (String) array[5];
   start = (Time) array[6];
   end = (Time) array[7];
   date = (Date) array[10];
}