0

別のクラスにある switch ステートメントを次に示します。

    public int calcPoints(char grade)
    {
      int points;
      switch(grade)
     {
       case 'A':
        points = 4; break;
       case 'a': 
        points = 4; break;
       case 'B':
        points = 3; break;
       case 'b':
        points = 3; break;
       case 'C':
        points = 2; break;
       case 'c':
        points = 2; break;
       case 'D':
        points = 1; break;
       case 'd':
        points = 1; break;
       case 'F':
        points = 0; break;
       case 'f':
        points = 0; break;
       default: 
        points = -1; break;    
       }
      return points;
      }

if ステートメントがある場所は次のとおりです (コメントで強調表示されています)。

      do
      {
        System.out.print("Enter grade (one character): ");
        aGrade = in.next();
        grade = aGrade.charAt(0);
        if(aGrade.length() != 1)
        {
            System.out.println("Invalid grade - must be exactly one character!");
        }
        else if(aGrade.equals(-1)) //This is where I want to use the default value
                                   //Obviously (-1) won't work
        {
            System.out.println("Invalid grade - must enter A,B,C,D,F");
        }
      }
      while(aGrade.length() != 1 ||(aGrade.equals(-1))); //I want to use it here too.

上記のコメントで値を使用する場所を正確に示しました。方法がある場合、switch ステートメントのデフォルト値を使用するにはどうすればよいですか。

4

3 に答える 3

3

else if(calcPoints(grade) == -1))の代わりに 使用 else if(aGrade.equals(-1))

2 つのプリミティブ データ型を比較す​​るには、これを使用"=="します

于 2013-10-29T04:11:35.177 に答える
1

その行を次のように変更します

else if(calcPoints(grade) == -1) 
于 2013-10-29T04:13:57.450 に答える
1

は文字列なのでaGrade、文字列とも比較する必要があります

else if(aGrade.equals("-1"))
...
while(aGrade.length() != 1 ||(aGrade.equals("-1")));

"-1"- これは、値が -1 の文字列です。これを使用して、aGrade文字列と比較する必要があります。

-1- これはint-1 の値を持つ です。


しかし、あなたはここで何か他のことをしているようです。これが必要だと思います

else if(calcPoints(grade) == -1)

これにより、ユーザー入力から取得しcalcPoints()た文字でメソッドが呼び出され、そのポイントが返されます。プリミティブ データ型は演算子を使用して比較されるためgrade、このポイントはメソッドではなくintを使用して比較する必要があります。==equals()==

于 2013-10-29T04:10:24.077 に答える