1,105,328 Community Members

Missing Return Statement Help

Member Avatar
joe.crook.9
Newbie Poster
3 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

In the last line of this method I am getting a missing return statement error, and I cannot figure out why. Any ideas?

public static int parameter(int g){
        Scanner console=new Scanner(System.in);
        String hint=console.next();

        if(hint.equals("low")){
            g=(g/2)+g;
            return g;

        }else if(hint.equals("high")){
            g=(g/2);
            return g;

        }else if(hint.equals("correct")){
            g=g;
            return g;
        }
}
Member Avatar
NormR1
Posting Sage
7,723 posts since Jun 2010
Reputation Points: 563 [?]
Q&As Helped to Solve: 793 [?]
Skill Endorsements: 16 [?]
Team Colleague
 
0
 

The method is defined to return an int value. The compiler sees that there could be a possibility of the code getting to the end of the if/else if statements and exiting the method without returning an int value. What if hint = "XXXX"?
Add a return with an int value at the end of the method.

Member Avatar
JamesCherrill
... trying to help
10,364 posts since Apr 2008
Reputation Points: 2,081 [?]
Q&As Helped to Solve: 1,750 [?]
Skill Endorsements: 47 [?]
Moderator
Featured
 
0
 

What happends if hint is none of low/high/correct? It executes none of your return statements and drops down to line 17 without returning an int.

Member Avatar
joe.crook.9
Newbie Poster
3 posts since Nov 2012
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

After doing that, no matter what I enter(low, high, correct), it returns g with no calculation. Is the format I've used the correct format to match with user input?

Member Avatar
NormR1
Posting Sage
7,723 posts since Jun 2010
Reputation Points: 563 [?]
Q&As Helped to Solve: 793 [?]
Skill Endorsements: 16 [?]
Team Colleague
 
0
 

To see what the computer sees print out the value of hint with a println after it is read.
Be sure to add String delimiters before and after the variable so you can see all its characters:
System.out.println("hint="+hint+"<");

The equals() method is used to compare String values.

Member Avatar
jalpesh_007
Posting Whiz
385 posts since Sep 2010
Reputation Points: -3 [?]
Q&As Helped to Solve: 43 [?]
Skill Endorsements: 6 [?]
 
0
 

equals() method compares two Strings.
If you have given input High / Low / correct, it only matches with hint variable.
What you have stored in hint variable String ot integer?
If you give any input instead of these 3 like bbb or aaa, it will not execute any of these case,and also return nothing.

so find what you are storing in hint variable.

Member Avatar
zach&kody
Newbie Poster
17 posts since Feb 2011
Reputation Points: -3 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

To solve this problem, simply set a variable equal to all of the return values in each of the if/else-if statements and then return that variable outside of the if/else-if blocks.

Member Avatar
stultuske
Posting Expert
5,292 posts since Jan 2007
Reputation Points: 935 [?]
Q&As Helped to Solve: 776 [?]
Skill Endorsements: 35 [?]
Featured
 
0
 

Zach&Kody: re-read your post, and you'll see why that's impossible. (and certainly not what is wanted).
either you return a default value if none of the cases are true, or throw an Exception.

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article