Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我试图在Java中将字母等级转换为数字等级_Java_Types - Fatal编程技术网

我试图在Java中将字母等级转换为数字等级

我试图在Java中将字母等级转换为数字等级,java,types,Java,Types,我知道将私有变量设置为字符数据类型,但我只是好奇为什么这种技术不起作用。我已经做了模拟器以及这是附加的。我也知道我不需要方法来实现这一点,但我正在尝试习惯使用方法进行编码 public class LetterGrade { private String grade; private double numGrade; private String sign; public LetterGrade(String grade) { } public double sign() { if(g

我知道将私有变量设置为字符数据类型,但我只是好奇为什么这种技术不起作用。我已经做了模拟器以及这是附加的。我也知道我不需要方法来实现这一点,但我正在尝试习惯使用方法进行编码

public class LetterGrade {
private String grade;
private double numGrade;
private String sign;

public LetterGrade(String grade)
{
}
public double sign()
{
    if(grade.equals("A"))
        numGrade=4.0;
    else if(grade.equals("B"))
        numGrade=3.0;
    else if(grade.equals("C"))
        numGrade=2.0;
    else if(grade.equals("D"))
        numGrade=1.0;
    else if(grade.equals("F"))
        numGrade=0.0;
    else
        System.out.println("");
    if(grade.substring(0,1).equals("-"))
        numGrade=numGrade-0.3;
    else if(grade.equals("+"))
        numGrade=numGrade+0.3;
    if(grade.equals("A+"))
        System.out.println(4.0);
    if(grade.equals("F+"))
        System.out.println("Not a valid input.");
    if(grade.equals("F-"))
        System.out.println("Not a valid input.");
   return numGrade;
}
}


您没有在构造函数中设置字段。像这样的

public LetterGrade(String grade)
{
    this.grade = grade;
}
另外,我认为您需要
String.startsWith(String)
String.endsWith(String)
之类的

public double sign() {
    if (grade.startsWith("A")) {
        numGrade = 4.0;
    } else if (grade.startsWith("B")) {
        numGrade = 3.0;
    } else if (grade.startsWith("C")) {
        numGrade = 2.0;
    } else if (grade.startsWith("D")) {
        numGrade = 1.0;
    } else {
        numGrade = 0.0;
    }
    if (grade.endsWith("-")) {
        numGrade -= 0.3;
    } else if (grade.endsWith("+")) {
        numGrade += 0.3;
    }
    if (grade.equals("F+")) {
        System.out.println("Not a valid input.");
    }
    if (grade.equals("F-")) {
        System.out.println("Not a valid input.");
    }
    return numGrade;
}

请告诉我们您的代码是如何出现错误的。它在做什么不应该做什么,不做什么应该做什么。一般来说,您可能希望通过添加我们理解问题所需的关于您的问题的尽可能多的相关信息来“充实”您的问题。首先,您从不将参数
grade
分配给任何东西,因为您现在编写代码,它应该生成
NullPointerException
public double sign() {
    if (grade.startsWith("A")) {
        numGrade = 4.0;
    } else if (grade.startsWith("B")) {
        numGrade = 3.0;
    } else if (grade.startsWith("C")) {
        numGrade = 2.0;
    } else if (grade.startsWith("D")) {
        numGrade = 1.0;
    } else {
        numGrade = 0.0;
    }
    if (grade.endsWith("-")) {
        numGrade -= 0.3;
    } else if (grade.endsWith("+")) {
        numGrade += 0.3;
    }
    if (grade.equals("F+")) {
        System.out.println("Not a valid input.");
    }
    if (grade.equals("F-")) {
        System.out.println("Not a valid input.");
    }
    return numGrade;
}