0

わかりました、私はこのコードを書こうとしていますが、このばかげたエラーが何度も発生します。何が間違っているのかわからないので、専門家の1人が助けてくれるかもしれません。

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

これを書いてみてください

 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

メソッドの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は、そうでない場合は常に String を返す必要があります。これを修正する最も簡単な方法は、デフォルトの return ステートメントを追加することです。

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

promComm メソッドは文字列を返しますが、切り替え値が 0 でない場合、関数は何も返しません。デフォルトの return ステートメントはありません。

于 2012-09-11T05:29:51.707 に答える
1

メソッドに戻り値の型がある場合、そのすべてのコード フローは値を返す必要があります。答えが false の場合、コード内で 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 に答える
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 に答える