2016-12-31 4 views
0

私が使用している方法ではループが必要です。新しいメソッドを追加してループを分割しようとすると、私は自分自身でコーナーに取り掛かりました。私は以下のコードの一部を貼り付けました。 私は現在、「return 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; 
    } 
+3

明示的な返品が必要です。 'isStaffAvailableWork'を返します。また、これは 'String'をどのように比較するかではありません。 –

+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

Elliott Frischがこれにコメントしました。

問題はaddJobが何も返されないということです。あなたのコンパイラがそう言っているので、それは、そのメソッドは何も返していない現状では

isStaffAvailableWork(trnsltr); 

はあなたが

return isStaffAvailableWork(trnsltr); 

が必要になります。

はどこのようなものを持っています。