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]

}

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.

Edited 5 Years Ago by JamesCherrill: ps

Comments
thanks

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.

Comments
thansk for the reply

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

This question has already been answered. Start a new discussion instead.