我写给数字等级计算器的信有什么问题?

时间:2016-09-11 01:31:21

标签: java methods

我正在尝试制作一个带字母等级的方法并返回一个数字等级。它只适用于没有优缺点的字母。这就是我所拥有的:

public class Grade{
  private String letterGrade;
  private double numericGrade;

  public Grade(String letterGrade)
  {
    this.letterGrade = letterGrade;
    this.numericGrade = numericGrade;
  }

  public void getNumericGrade()
  {
    if (letterGrade.equals("A"))
    {
      numericGrade = 4.0;
    }
    else if (letterGrade.equals("B"))
    {
      numericGrade = 3.0;
    }
    else if (letterGrade.equals("C"))
    {
      numericGrade = 2.0;
    }
    else if (letterGrade.equals("D"))
    {
      numericGrade = 1.0;
    }
    else if (letterGrade.equals("F"))
    {
      numericGrade = 0.0;
    }

    if (letterGrade.substring(1).equals("+"))
    {
      numericGrade += .3;
    }
    else if (letterGrade.substring(1).equals("-"))
    {
      numericGrade -= .3;
    }

    System.out.println(numericGrade);

  }

对于“A”给出4.0,但对于A-给出-0.3。怎么回事?

2 个答案:

答案 0 :(得分:2)

将您的equals更改为startsWith来电(因为" A +"不等于" A"),然后执行初始化在您的构造函数中(并将numericGrade初始化为自身应该给您一个警告)。 getter应该返回值(不设置它)。像,

private String letterGrade;
private double numericGrade;

public Grade(String letterGrade) {
    this.letterGrade = letterGrade;
    if (letterGrade.startsWith("A")) {
        numericGrade = 4.0;
    } else if (letterGrade.startsWith("B")) {
        numericGrade = 3.0;
    } else if (letterGrade.startsWith("C")) {
        numericGrade = 2.0;
    } else if (letterGrade.startsWith("D")) {
        numericGrade = 1.0;
    } else if (letterGrade.startsWith("F")) {
        numericGrade = 0.0;
    }

    if (letterGrade.substring(1).equals("+")) {
        numericGrade += .3;
    } else if (letterGrade.substring(1).equals("-")) {
        if (numericGrade > 0) {
            numericGrade -= .3; // <-- or an F- is -0.3
        }
    }
}

public double getNumericGrade() {
    // System.out.println(numericGrade);
    return numericGrade;
}

答案 1 :(得分:1)

好吧,走过去吧。如果你通过&#34; A - &#34;,那么&#34; A - &#34;不等于&#34; A&#34;,所以你不能获得4.0(或其他字母等级)。但是你确实得到-0.3为负......