Note n ° 6 "Calculez la formule de la différence de somme à un chiffre reçue sous forme de chaîne de caractères" [Java]

introduction

Enregistré parce que j'ai utilisé la méthode getNumericValue pour la première fois.

Que veux-tu faire

-Recevoir la formule de calcul avec une chaîne de caractères de n'importe quelle longueur (tous les nombres utilisés sont à 1 chiffre, les opérateurs ne sont que '+' et'- ') ・ Calculez la chaîne de caractères reçue sous forme de valeur numérique ・ Sortie du résultat du calcul

(Exemple) Entrée: "1 + 2 + 3" Sortie: 6

code

        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        sc.close();
        char [] c = line.toCharArray();

        int sum = 0;
        boolean add = true;

        for(int i = 0; i < line.length(); i++) {
            if(i % 2 == 0) {//Les nombres pairs sont calculés car les nombres et les opérateurs alternent.,Opérateurs d'échange de cotes
                if(add) {
                    int n = c[i];
                    sum += n;
                } else {
                    int n = c[i];
                    sum -= n;
                }
            } else {
                if(c[i] == '+') {
                    add = true;
                } else {
                    add = false;
                }
            }
        }
        System.out.println(sum);

Entrée: "1 + 2 + 3" Sortie: 150

Problèmes avec le code 1

-Lorsque la valeur numérique placée dans le tableau de type char est convertie en type int, elle a été affectée avec le code de caractère ASCII. → Je veux retirer les nombres du tableau tels qu'ils sont!

Code amélioré

                if(add) {
                    int n = Character.getNumericValue(c[i]);
                    sum += n;
                } else {
                    int n = Character.getNumericValue(c[i]);
                    sum -= n;
                }

Entrée: "1 + 2 + 3" Sortie: 6

Sommaire

Si vous souhaitez utiliser le numéro de type char tel quel, utilisez le type de caractère getNumericValue ().

Postscript

Avant omission
                if(c[i] == '+') {
                    add = true;
                } else {
                    add = false;
                }

Dans la partie ci-dessus, l'opérateur de comparaison renvoie un type booléen, vous pouvez donc juger de l'authenticité en l'attribuant directement à ajouter.

Après omission

                add = c[i] == '+';

Recommended Posts

Note n ° 6 "Calculez la formule de la différence de somme à un chiffre reçue sous forme de chaîne de caractères" [Java]
Remarque sur l'initialisation des champs dans le didacticiel Java
Mémorandum n ° 4 "Obtenez une chaîne de caractères et décorez-la" [Java]
Lisez le fichier sous le chemin de classe sous forme de chaîne de caractères avec ressort
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Appelle la chaîne de caractères passée comme argument en tant que méthode avec send
Note n ° 3 "Remplacer la chaîne de caractères saisie pour chaque caractère en fonction des conditions"
Consulter les notes de la classe java.util.Scanner
Consultez les notes de la classe java.util.Optional
Une note de révision pour la classe java.util.Objects
Consulter les notes du package java.time.temporal
[Java] Différence entre equals et == dans une chaîne de caractères qui est un type de référence
[Java] Remarque sur la différence entre le jugement d'équivalence et le jugement d'égalité lors de la comparaison de classes String
[Java] Découpez une partie de la chaîne de caractères avec Matcher et des expressions régulières