繁体   English   中英

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

[英]What is wrong with my letter to number grade calculator?

我正在尝试使用字母等级并返回数字等级的方法。 它仅适用于没有正负的字母。 这是我所拥有的:

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。 这里发生了什么?

将您的equals更改为startsWith调用(因为“ A +”不等于“ A”),然后在构造函数中进行初始化 (将numericGrade初始化为它本身会发出警告)。 吸气剂应返回值(不设置值)。 就像是,

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;
}

好吧,通过它。 如果您通过“ A-”,那么“ A-”不等于“ A”,因此您不会获得4.0(或其他字母等级)的分数。 但是您的确得到了负值-0.3 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM