2014-12-20 3 views
0

Я создал метод, который состоит из множества циклов внутри внутри. Я хочу вернуть значение из этого метода, который инициализирует внутри цикла for.What я могу вернуть это?как вернуть значение из цикла?

public static String check_payment_status(String id){ 
    String remaining_amount; 
    try { 
     ResultSet courseid=dbcon().executeQuery("select course_id from student where student_id='"+id+"'"); 

     while(courseid.next()){ 
      String idcrs=courseid.getString("course_id"); 
      ResultSet rsfee=dbcon().executeQuery("select fee from course where course_id='"+idcrs+"'"); 

      while(rsfee.next()){ 
      int fee=rsfee.getInt("fee"); 
      ResultSet payments=dbcon().executeQuery("select amount from payment where student_id='"+id+"'"); 
      int pmnt[]=new int[30]; 
      int add=0; 
      for(int i=0;payments.next();i++){ 
       pmnt[i]=payments.getInt("amount"); 
       add+=pmnt[i]; 
      } 
      int rem_amout_pay= fee-add; 
      remaining_amount= Integer.toString(rem_amout_pay); 
     } 
     } 
    } catch (Exception e) { 
    } 
    return remaining_amount;  
} 
+0

Что именно вы хотите вернуть и откуда? Осталось ли это? – SMA

+3

Не проглатывайте исключения. Плохо, плохо, плохо. – FoggyDay

+0

yes ... Я хочу вернуть still_amount всякий раз, когда вызывается этот метод. –

ответ

0

Вы хотите оставить петлю после того, как значение возврата рассчитывается, который можно достичь путем размещения оператора возврата внутри цикла:

public static String check_payment_status(String id) 
{ 
    String remaining_amount = null; 
    try { 
     ResultSet courseid=dbcon().executeQuery("select course_id from student where student_id='"+id+"'"); 
     while(courseid.next()){ 
      String idcrs=courseid.getString("course_id"); 
      ResultSet rsfee=dbcon().executeQuery("select fee from course where course_id='"+idcrs+"'");  
      while(rsfee.next()){ 
       int fee=rsfee.getInt("fee"); 
       ResultSet payments=dbcon().executeQuery("select amount from payment where student_id='"+id+"'"); 
       int pmnt[]=new int[30]; 
       int add=0; 
       for(int i=0;payments.next();i++){ 
        pmnt[i]=payments.getInt("amount");   
        add+=pmnt[i];   
       } 
       int rem_amout_pay = fee - add; 
       return Integer.toString(rem_amout_pay);  
      }     
     } 
    } catch (Exception e) { 
    } 
    return remaining_amount; 
} 

Обратите внимание, что вы все равно должны иметь возврат в конце вашего метода, если оператор возврата внутри цикла не был достигнут.

+0

Решение о возврате null должно быть тщательно рассмотрено. Если гарантировано, что студент существует, но не имеет курсов, то указывается нулевой нуль («0,00»). Но если идентификатор студента может вообще отсутствовать в БД, нуль может быть лучше, передавая ему обработку этого звонящего. – laune

+0

Если это должно рассчитать сумму всех сборов, тогда цикл плохо сконструирован, и сумма должна покрывать все курсы, возвращенные из первого запроса. – laune

+0

@ eran благодаря ur answer.bt i didnt work.it показывает ошибку, где размещается последний оператор возврата, говорящий, что «переменная ramaining_amount, возможно, не была инициализирована» –

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