I have a question regarding return statements used within if()
while()
or for()
statements.
As you can see in the following method, it is expecting that I return
a String value.
The problem is that if I were to use a return
statement within my if
statement block, the compiler would return the error missing return statement
.
public String myMethod()
{
if(condition)
{
return x;
}
}
Of course I could change the method header to void
and use System.out.println
instead of return
. But is this the right way to do it? am i missing something?
Any help is highly appreciated.
Try with, as if
if condition
returns false, so it will return empty otherwise nothing to return.Because the compiler doesn't know if any of those if blocks will ever be reached, so it's giving you an error.
That is illegal syntax. It is not an optional thing for you to return a variable. You MUST return a variable of the type you specify in your method.
You are effectively saying, I promise any class can use this method(public) and I promise it will always return a String(String).
Then you are saying IF my condition is true I will return x. Well that is too bad, there is no IF in your promise. You promised that myMethod will ALWAYS return a String. Even if your condition is ALWAYS true the compiler has to assume that there is a possibility of it being false. Therefore you always need to put a return at the end of your non-void method outside of any conditions JUST IN CASE all of your conditions fail.
That's because the function needs to return a value. Imagine what happens if you execute
myMethod()
and it doesn't go intoif(condition)
what would your function returns? The compiler needs to know what to return in every possible execution of your functionChecking Java documentation:
You can do to solve your problem:
This will return the string only if the condition is true.
try this:
It's because if you don't go in the if, there is nothing to return, so it miss a return. :)
should be :