缺少return语句,循环

时间:2016-12-31 01:13:09

标签: java loops if-statement return

我使用的方法需要循环,并且我已经成功地通过添加新方法来尝试将循环分开。我在下面粘贴了部分代码。 我目前收到错误消息"缺少退货声明"虽然我知道为什么会这样,但我不确定如何继续。任何帮助或建议将不胜感激!感谢。

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;
    }

2 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:0)

Elliott Frisch在评论中回答了这个问题。

问题是您的addJob没有返回任何内容。

你有这样的地方:

isStaffAvailableWork(trnsltr);

你需要

return isStaffAvailableWork(trnsltr);

就目前而言,该方法不会返回任何内容,因此您的编译器就这么说了。