缺少返回语句的Java错误

时间:2012-09-11 05:26:34

标签: java

好吧,我正在尝试编写此代码,但我不断收到这个愚蠢的错误。我不知道我做错了什么,所以也许你们中的一位专家可以帮助我。

import java.util.*;

public class School
{
Random randQuest = new Random();

int userAnswer;

public void createQuestion()
{

    int range = 10; // range of numbers in question

    int num1 = randQuest.nextInt( range );
    int num2 = randQuest.nextInt( range );

    userAnswer = num1 * num2;

    System.out.printf( "How much is %d times %d?\n",
        num1, num2 );

}

// prompt comment
public String promComm( boolean answer )
{
    if ( answer )
    {
        switch ( randQuest.nextInt( 1 ) )
        {

        case 0:
            return( "Very Good!" );

        }

        switch ( randQuest.nextInt( 1 ) )
        {

        case 0:                 
            return( "No. Please try again." );

        }
    }
}

}

6 个答案:

答案 0 :(得分:1)

方法promComm如果answerfalse,则该方法不会返回任何值。 如果randQuest.nextInt(1) != 0.

,则相同

应该是这样的:

public String promComm( boolean answer ){
    if (answer){

        switch (randQuest.nextInt(1)){    
           case 0:
               return("Very Good!");
        }

        switch (randQuest.nextInt(1) ){
           case 0:                 
               return( "No. Please try again." );
        }

        return "Some value";

    }else

        return "Some value";
  }

答案 1 :(得分:1)

你的方法promComm应该在每种情况下返回一个字符串,而不是它。修复它以添加默认返回语句的最简单方法。

public String promComm( boolean answer ){
    if ( answer ){
        //...
    }
    return "default value when answer is false.";
}

答案 2 :(得分:1)

promComm方法返回String但是如果切换值不为0,那么你的函数将不返回任何内容 - 没有默认的return语句。

答案 3 :(得分:1)

尝试写这个

 public String promComm( boolean answer )
    {
        if ( answer )
        {
            switch ( randQuest.nextInt( 1 ) )
            {
               case 0:  return( "Very Good!" );
            }
            switch ( randQuest.nextInt( 1 ) )
            {
                case 0: return( "No. Please try again." );
            }
        }
        return "";
    }

答案 4 :(得分:1)

在if-else语句

之后返回一个String结果
public String promComm( boolean answer ){

   if(answer){
       ...

   }else{

      ...
   }

return ""; //empty string <-- you are missing a default return statement
}

答案 5 :(得分:1)

当方法具有返回类型时,其所有代码流都必须返回一个值。 如果答案是假的,你的代码中的promComm()不会遇到if和 永远不会回报价值!

除了不建议在方法中使用多个return!

例如,你可以通过以下方式避免这种情况:

public String promComm( boolean answer ) {
    String returnValue = "Answer is false"; //or = ""
if ( answer )
{
    switch ( randQuest.nextInt( 1 ) )
    {

    case 0:
        returnValue = "Very Good!";

    }

    switch ( randQuest.nextInt( 1 ) )
    {

    case 0:                 
         returnValue = "No. Please try again.";

    }
 }
return returnVal;
}