0
A、B、C、D、Fのようなグレードを数値形式(4,3,2,1,0)に変換するプログラムを書く必要があります。グレードは+または - を持つことができます(+ 0.3のグレードを増やす - 同じ数の減少)。 私はこのプログラムの開発を書いた:ファイル内でNullPointerExceptionが発生するJava Misanderstanding
public class Grade{
private String letterGrade;
private String letter;
private String symbol = "n";
private double numericGrade;
private double grade;
private final double PLUS = 0.3;
private final double MENO = -0.3;
public Grade(String letterGrade) {
this.letterGrade = letterGrade;
}
public double getNumericGrade() {
if (letterGrade.length() > 1) {
letter = letterGrade.substring(0, 1);
symbol = letterGrade.substring(1, 2);
}
if (letter.equals("A")) {
numericGrade = 4.0;
if (symbol.equals("+")) {
symbol = "n";
}
}
else if (letter.equals("B")) {
numericGrade = 3.0;
}
else if (letter.equals("C")) {
numericGrade = 2.0;
}
else if (letter.equals("D")) {
numericGrade = 1.0;
}
else if (letter.equals("F")) {
numericGrade = 0.0;
}
if (symbol.equals("+")) {
grade = numericGrade + PLUS;
}
else if (symbol.equals("-")) {
grade = numericGrade + MENO;
}
else {
grade = numericGrade;
}
return grade;
}
}
そして、プログラムの開発テスター:
import java.util.Scanner;
public class GradeTester{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Please enter the grade in letter form: ");
String letterGrade = in.next();
if (letterGrade.equals("A") || letterGrade.equals("A+") || letterGrade.equals("A-")) {
Grade graduation = new Grade(letterGrade);
System.out.println("The grade in number form is: " + graduation.getNumericGrade());
}
else if (letterGrade.equals("B") || letterGrade.equals("B+") || letterGrade.equals("B-")) {
Grade graduation = new Grade(letterGrade);
System.out.println("The grade in number form is: " + graduation.getNumericGrade());
}
else if (letterGrade.equals("C") || letterGrade.equals("C+") || letterGrade.equals("C-")) {
Grade graduation = new Grade(letterGrade);
System.out.println("The grade in number form is: " + graduation.getNumericGrade());
}
else if (letterGrade.equals("D") || letterGrade.equals("D+") || letterGrade.equals("D-")) {
Grade graduation = new Grade(letterGrade);
System.out.println("The grade in number form is: " + graduation.getNumericGrade());
}
else if (letterGrade.equals("F")) {
Grade graduation = new Grade(letterGrade);
System.out.println("The grade in number form is: " + graduation.getNumericGrade());
}
else {
System.out.println("Not permissed!");
}
}
}
しかし、私は+なしだけの手紙のために、それを試していますか - このエラーが表示されます。
Exception in thread "main" java.lang.NullPointerException
at Grade.getNumericGrade(Grade.java:20)
at GradeTester.main(GradeTester.java:13)
何が問題なのか分かりません。