2016-12-31 2 views
0

Eine Methode, die ich verwende, erfordert Schleifen, und ich habe es geschafft, mich in eine Ecke arbeiten, die Schleifen durch neue Methoden zu teilen versuchen. Ich habe einen Teil meines Codes unten eingefügt. Ich erhalte zur Zeit die Fehlermeldung "Missing return statement" und obwohl ich weiß, warum das passiert, bin ich mir nicht sicher, wie ich weitermachen soll. Jede Hilfe oder Vorschläge würden geschätzt werden! Vielen Dank.Fehlende Return-Anweisungen, Schleifen

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

Sie benötigen explizite Rückgabe (n). 'return isStaffAvailableWork'. Das ist auch nicht so, wie Sie "String" (s) vergleichen. –

+0

Ich bin verwirrt durch den Verweis auf Schleifen. – massfords

+0

Um Ihnen zu helfen, zu verstehen, was Elliott gesagt hat ... Verwenden Sie '! Lang.equals (" English ")' stattdessen. – byxor

Antwort

2

Ihre Frage ist etwas breit, aber Ihr Problem ist, dass Ihre Funktion irgendwie keinen Wert zurückgibt. Jede Zeile, aus der eine Funktion austreten kann, muss etwas zurückgeben.

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 beantwortete dies in einem Kommentar. Das Problem ist, dass Ihr addJob nichts zurückgibt.

Wo haben Sie Dinge wie:

isStaffAvailableWork(trnsltr); 

Sie benötigen

return isStaffAvailableWork(trnsltr); 

Wie es aussieht, ist diese Methode nichts zurückkehr so ​​Compiler so sagt.