This is my code. when I compile using bluej it highlights the last } and says missing return statement. I cant put void because it is a boolean. ANy ideas?
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");
}
}
You should simply return jobsFinished.
To be clear:
In Java, as in C-like languages, require a return statement based on the return type of the method / function.
In your case:
Requires that a boolean be returned. As such, when you try to compile the code, and there isn't a return statement in your method body, the compiler will complain.
So, what you have to do is determine what information you wish to return(a boolean in this case). As others have pointed out, you should return jobsFinished since that is a boolean type whose value you wish to determine upon the method call.
return Statement must be always the last statement in the method
seconds remaining on the clock");
You just forgot to put return jobsFinished; after the end of the System.out.print line. When you do, it should run and compile successfully, which I am sure of because I made the same mistake today :P
Good luck.
-Keelen
You have specified a
boolean
return type but your function doesn't return any value.The
jobsFinished
variable is redundant, as is yourelse
branch:If the conditions are satisfied, the function will
return
before the last two statements anyway, so anelse
isn't necessary. I also moved theString jobName = firstJob.getName();
inside theif
branch because you're not using it otherwise.If you prefer to use a
boolean
variable, andreturn
it at the end of the function, then you could do:Change your function definition/prototype... Use this
public void runAJob()
instead of what you have used...Replace
boolean
withvoid
in the prototype.. And then try