2012-10-14 61 views
0

這是我的代碼。當我使用bluej進行編譯時,它突出顯示了最後一個}並且缺少返回語句。我不能把void作爲布爾值。有任何想法嗎?缺少退貨聲明?

public boolean runAJob() { 
    boolean jobsFinished = false; 
    Job firstJob = getCurrentJob(); 
    String jobName = firstJob.getName(); 
    int jobDuration = firstJob.getDuration(); 
    if (!myJob.isEmpty()&& jobDuration > 0 && jobDuration <= myTotalDuration) { 
     myTotalDuration -= jobDuration; 
     myFinishedJobs.add(myJob.get(0)); 
     myJob.remove(0); 
     System.out.println("'"+jobName+"'" +" is completed. "+ myTotalDuration+ " seconds remaining on the clock"); 
     jobsFinished = true; 
    } else { 
      System.out.println("JobQueue is empty"); 
    } 
} 
+0

是什麼把回報jobsFinished的問題; –

回答

0

您應該簡單地返回jobsFinished。

要明確:

public boolean runAJob() 
     { 
      boolean jobsFinished = false; 
      Job firstJob = getCurrentJob(); 
      String jobName = firstJob.getName(); 
      int jobDuration = firstJob.getDuration(); 
      if (!myJob.isEmpty()&& jobDuration > 0 && jobDuration <= myTotalDuration) 
      { 
       myTotalDuration -= jobDuration; 
       myFinishedJobs.add(myJob.get(0)); 
       myJob.remove(0); 
       System.out.println("'"+jobName+"'" +" is completed. "+ myTotalDuration+ " seconds remaining on the clock"); 
       jobsFinished = true; 
      } 
      else 
      { 
       System.out.println("JobQueue is empty"); 
      } 
      return jobsFinished; 
     } 
1

在Java中,在C類語言,需要基於方法/函數的返回類型return語句。

你的情況:

public boolean runAJob() { ... } 

需要一個布爾返回。 因此,當您嘗試編譯代碼並且在方法體中沒有返回語句時,編譯器會發出抱怨。

所以,你要做的是確定你想返回什麼信息(在這種情況下是一個布爾值)。正如其他人指出的那樣,您應該返回作業已完成,因爲這是一個布爾類型,其值希望通過方法調用確定。

public boolean runAJob() 
    { 
     boolean jobsFinished = false; 
     Job firstJob = getCurrentJob(); 
     String jobName = firstJob.getName(); 
     int jobDuration = firstJob.getDuration(); 
     if (!myJob.isEmpty()&& jobDuration > 0 && jobDuration <= myTotalDuration) 
     { 
      myTotalDuration -= jobDuration; 
      myFinishedJobs.add(myJob.get(0)); 
      myJob.remove(0); 
      System.out.println("'"+jobName+"'" +" is completed. "+ myTotalDuration+ " seconds remaining on the clock"); 
      jobsFinished = true; 
      return jobsFinished; //this is one possible place 

     } 
     else 
     { 
      System.out.println("JobQueue is empty"); 
     } 
     //here is another possible place where you could have put the return 
     //return jobsFinished; 
    } 
0

return語句必須總是最後聲明的方法

public boolean runAJob() 
    { 
     boolean jobsFinished = false; 

     Job firstJob = getCurrentJob(); 

     String jobName = firstJob.getName(); 

     int jobDuration = firstJob.getDuration(); 

     if (!myJob.isEmpty()&& jobDuration > 0 && jobDuration <= myTotalDuration) 

     { 

      myTotalDuration -= jobDuration; 

      myFinishedJobs.add(myJob.get(0)); 

      myJob.remove(0); 

      System.out.println("'"+jobName+"'" +" is completed. "+ myTotalDuration+ " 

留在時鐘「)秒;

   jobsFinished = true; 

     } 

     else 

     { 

      System.out.println("JobQueue is empty"); 

     } 

     return jobsFinished; 
    } 
0

你剛纔忘了把 回報jobsFinished ;在System.out.print行結束後的 。 當你這樣做時,它應該運行和編譯成功,我相信,因爲我今天犯了同樣的錯誤:P

祝你好運。

-Keelen

0

更改你的函數定義/原型...使用此public void runAJob(),而不是你用什麼...

與原型void更換boolean ..然後嘗試

0

您已指定boolean返回類型,但您的函數不返回任何值。

jobsFinished變量是多餘的,因爲是你else分支:

public boolean runAJob() { 
    Job firstJob = getCurrentJob();  
    int jobDuration = firstJob.getDuration(); 

    if (!myJob.isEmpty() && jobDuration > 0 && jobDuration <= myTotalDuration) { 
     String jobName = firstJob.getName(); 
     myTotalDuration -= jobDuration; 
     myFinishedJobs.add(myJob.get(0)); 
     myJob.remove(0); 
     System.out.println("'"+jobName+"'" +" is completed. "+ myTotalDuration+ " seconds remaining on the clock"); 
     return true; 
    } 

    System.out.println("JobQueue is empty"); 
    return false; 
} 

如果條件得到滿足,該函數將return反正最後兩個語句之前,這樣的else是沒有必要的。我還在if分支內移動了String jobName = firstJob.getName();,因爲您沒有使用它。

如果你喜歡使用boolean變量,return它在函數的末尾,那麼你可以做:

public boolean runAJob() { 
    Job firstJob = getCurrentJob();  
    int jobDuration = firstJob.getDuration(); 
    boolean jobsFinished = !myJob.isEmpty() && jobDuration > 0 && jobDuration <= myTotalDuration; 
    if (jobsFinished) { 
     String jobName = firstJob.getName(); 
     myTotalDuration -= jobDuration; 
     myFinishedJobs.add(myJob.get(0)); 
     myJob.remove(0); 
     System.out.println("'"+jobName+"'" +" is completed. "+ myTotalDuration+ " seconds remaining on the clock");    
    } 
    else { 
     System.out.println("JobQueue is empty"); 
    } 
    return jobsFinished; 
}