Hey guys I keep getting the "no return statement error in two places, I have commented them for you

/**
 * A WordsCompare object stores Strings.  It is used to determine if the first word 
 * should be placed before or after the second word in the dictionary
 */
public class WordsCompare
{
	//instance fields
	private String wordOne, wordTwo;
	/**
	 *Input for word one and word two
	 *@param one enter word one
	 *@param two enter word two
	 */
	public WordsCompare(String one, String two)
	{
	wordOne=one;
	wordTwo=two;


	}

	/**
	 *compares the two strings
	 *
	 */
	public String getComparison()
	{
		// You must use an if..else statement in this method
		// If you would like to test for the strings being the same, use an if..else..else,
		// but that is optional.  It is not tested in this particular data set.
	
	if(wordOne.compareTo(wordTwo)>0)
	{
		return wordOne+" should be placed after "+wordTwo;
	}
	else if(wordOne.compareTo(wordTwo)<0)
	{
		return wordOne+" should be placed before "+wordTwo;
	}
	else if(wordOne.compareTo(wordTwo)==0)
	{
		return wordOne+" is the same as "+wordTwo;
	}
	
	}[B]//no return statement[/B]
	
	public String getCompareLength()
	{
		// You must use an if..else..else statement in this method	
		
		if (wordOne.length()>wordTwo.length())
		{
			return wordOne+" is longer than "+wordTwo;
		}
		else if (wordOne.length()<wordTwo.length())
		{
			return wordOne+" is shorter than "+wordTwo;
		}
		else if(wordOne.length()==wordTwo.length())
		{
			return wordOne+" is equal to "+wordTwo;
		}
		
	}[B]//No return statement[/B]

}

Recommended Answers

All 7 Replies

delete the last else if for each method and put a else
and ure done

commented: helped +0

Your problem is that although you know that one of those if tests must be true, the compiler isn't quite that smart, so it worries about the case where all 3 if tests are false and execution drops out of the last elseif. In that case it gets to the end of the method without returning a String. ilovejava's solution will fix it, or, if you want to keep the very explicit version of your if tests you can just add a final return ""; at the end of each method.

ps @ilovejava - that was a sensible solution, but you will help people even more if you give some explanation of what the problem was caused by, and how your solution fixes it. J.

commented: thanks +0

I think it would be better to return null instead of "". That way, the rest of the methods can check easier if there was any 'real' return.

commented: thansk for the reply +0

Yes, in general I agree. In this particular case it's less important because that final return can never be executed.

Yes, I agree to that too :).

If you're happy with the answers to your question please mark this "solved" so everyone knows there's no more work needed. Thanks.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.