2016-12-31 103 views
0

我正在使用的一种方法需要循环,并且我设法将自己变成一个角落,试图通过添加新方法来分离循环。我在下面粘贴了部分代码。 我目前收到错误信息“missing return statement”,虽然我意识到为什么会发生这种情况,但我不确定如何继续。任何帮助或建议,将不胜感激!谢谢。缺少返回语句,循环

public String addJob(String cust,boolean onSite, boolean sHand, String lang) 
{ int nt = 100; 

    if (customers.containsKey(cust)) 
    { 
      if (0 >= getCustomerCredit(cust)) { 
      return " Customer over credit limit "; } 

      if (nt >= getCustomerCredit(cust)) 
      { 
       Job jb = new Job(cust, onSite, sHand, lang); 
       job.put(jb, getNewJobNo()); 
        if(lang != "English") 
         { 
         isStaffAvailableWork(trnsltr);} 
        if(sHand == false) 
         { isStaffAvailableWork(clk); 
         } 
        else { isStaffAvailableWork(typst); 
         } 

      } 

    } 
    else { 
      Customer c = new Customer(cust); 
      customers.put(cust, ntnt); 
      Job jb = new Job(cust, onSite, sHand, lang); 
      job.put(jb, getNewJobNo()); 
       if(lang != "English") 
        { 
        isStaffAvailableWork(trnsltr);} 
       if(sHand == false) 
        { isStaffAvailableWork(clk); 
        } 
       else { isStaffAvailableWork(typst); 
         } 

    }  
} 

public String isStaffAvailableWork(Staff stf) 
{  
     if (staff.containsKey(stf)&&(stf.isStaffAvailable()==true)) 
     { 
      jb.setJobStatusOnGoing(); 
      stf.setStaffBusy(); 
      jobNoAndstaffId.put(staff.get(stf), job.get(jb)); 
      return "Staff allocated: " + stf; 

     } 

     if (staff.containsKey(stf)&&(stf.isStaffAvailable()==false)) 
     { 
      jb.setJobStatusWaiting(); 
      return "Job Waiting"; 

     } 
     else return null; 
    } 
+3

您需要显式返回。 '返回isStaffAvailableWork'。此外,这不是你比较'字符串(S)。 –

+0

我对引用循环感到困惑。 – massfords

+0

为了帮助你理解Elliott所说的话......用'!lang.equals(“English”)代替。 – byxor

回答

2

你的问题有点宽泛,但你的问题是,你的功能不知道怎么回报一个值。函数可以从中退出的每一行都必须返回一些内容。

public bool foo(var x) 
{ 
    if(x == 0) 
    { 
     // Returns successfully. 
     return true; 
    } 
    else if(x != 0) 
    { 
     // Didn't return anything. 
    } 
    // Also didn't return anything. 
} 
0

埃利奥特·弗里施在评论回答了这个。

问题是你的addJob不会返回任何东西。

如果你有喜欢的东西:

isStaffAvailableWork(trnsltr); 

你需要

return isStaffAvailableWork(trnsltr); 

目前的情况是,该方法不返回任何东西让你的编译器是这么说的话。