0

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

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." );

        }
    }
}

}

4

6 回答 6

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";
  }
于 2012-09-11T05:29:36.700 回答
1

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

public String promComm( boolean answer ){
    if ( answer ){
        //...
    }
    return "default value when answer is false.";
}
于 2012-09-11T05:29:44.413 回答
1

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

于 2012-09-11T05:29:51.707 回答
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 "";
    }
于 2012-09-11T05:33:48.887 回答
1

在 if-else 语句之后返回一个字符串结果

public String promComm( boolean answer ){

   if(answer){
       ...

   }else{

      ...
   }

return ""; //empty string <-- you are missing a default return statement
}
于 2012-09-11T05:49:41.987 回答
1

当一个方法有一个返回类型时,它的所有代码流都必须返回一个值。在您的代码中,如果答案为假 promComm() 不会遇到 if 块并且永远不会返回值!

除了它不建议在一个方法中使用多个返回!

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

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;
}
于 2012-09-11T05:52:03.653 回答