Question dans le livre :
Écrire un programme qui traduit une note en lettres en une note en chiffres. Les notes en lettres sont A
, B
, C
, D
et F
, éventuellement suivie de +
o –
. Leurs valeurs numériques sont 4
, 3
, 2
, 1
et 0
. Il n'y a pas de F+
o F–
. A +
augmente la valeur numérique de 0.3
, a –
le diminue de 0.3
. Toutefois, un A+
a de la valeur 4.0
.
Saisissez une note en lettres : B-
La valeur numérique est 2.7
. Utiliser une classe Grade avec une méthode getNumericGrade
.
Ma question est donc la suivante : Je sais que mon code est correct, je peux l'exécuter. Mais je suis curieux de savoir s'il existe un raccourci ou une meilleure version de ce code qui le rendrait plus professionnel et plus facile à lire. Toute suggestion ou exemple serait grandement apprécié.
Code :
import java.util.Scanner;
public class grade
{
private double numericValue = 0;
private String grade = "";
public grade()
{
Scanner in = new Scanner(System. in );
System.out.print("Enter Grade: ");
grade = in .nextLine();
}
public double getNumericGrade()
{
if (grade.equals("A+") || grade.equals("A"))
{
numericValue = 4.0;
}
else if (grade.equals("A-"))
{
numericValue = 3.7;
}
else if (grade.equals("B+"))
{
numericValue = 3.3;
}
else if (grade.equals("B"))
{
numericValue = 3.0;
}
else if (grade.equals("B-"))
{
numericValue = 2.7;
}
else if (grade.equals("C+"))
{
numericValue = 2.3;
}
else if (grade.equals("C"))
{
numericValue = 2.0;
}
else if (grade.equals("C-"))
{
numericValue = 1.7;
}
else if (grade.equals("D+"))
{
numericValue = 1.3;
}
else if (grade.equals("D"))
{
numericValue = 1.0;
}
else if (grade.equals("F"))
{
numericValue = 0;
}
else
{
System.out.println("Letter not in grading system");
}
return numericValue;
}
}