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))

要比较两种原始数据类型,请使用"=="这个

于 2013-10-29T04:11:35.177 回答
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 回答
1

将该行更改为

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