4 votes

Décisions et si méthode

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

0voto

Karthik T Points 19418

En plus de la suggestion de @Thilos sur la façon de stocker les données réelles, je voudrais ajouter que dans de tels cas, vous ne voulez pas stocker les deux, dans ce cas, String y int des données, sauf si les performances sont EXTRÊMEMENT critiques.

Bien que cela ne semble pas être un gros problème aujourd'hui, dans de nombreux cas, vous courez le risque de perdre la synchronisation entre les deux, c'est-à-dire String dit une chose et l'autre int dit un autre, et vous rencontrez des bogues à cause de cela.

Et votre constructeur ne devrait pas demander d'entrée, à moins que cela ne devienne très courant il est plus propre de prendre un String .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X