Anmerkung Nr. 6 "Berechnen Sie die Formel für die als Zeichenfolge empfangene einstellige Summendifferenz" [Java]

Einführung

Aufgenommen, weil ich zum ersten Mal die Methode getNumericValue verwendet habe.

Was willst du tun

-Erhalten Sie die Berechnungsformel mit einer Zeichenfolge beliebiger Länge (alle verwendeten Zahlen sind 1-stellig, Operatoren sind nur '+' und'- ') ・ Berechnen Sie die empfangene Zeichenfolge als numerischen Wert ・ Berechnungsergebnis ausgeben

(Beispiel) Eingabe: "1 + 2 + 3" Ausgabe: 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) {//Gerade Zahlen werden berechnet, da sich Zahlen und Operatoren abwechseln.,Quoten-Swap-Operatoren
                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);

Eingabe: "1 + 2 + 3" Ausgabe: 150

Probleme mit Code 1

-Wenn der im Array vom Typ char eingegebene numerische Wert in den Typ int konvertiert wird, wurde ihm der ASCII-Zeichencode zugewiesen. → Ich möchte die Zahlen im Array so herausnehmen, wie sie sind!

Verbesserter Code

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

Eingabe: "1 + 2 + 3" Ausgabe: 6

Zusammenfassung

Wenn Sie die Zeichentypnummer unverändert verwenden möchten, verwenden Sie den Zeichentyp getNumericValue ().

Nachtrag

Vor dem Auslassen
                if(c[i] == '+') {
                    add = true;
                } else {
                    add = false;
                }

Im obigen Teil gibt der Vergleichsoperator einen booleschen Typ zurück, sodass Sie die Authentizität beurteilen können, indem Sie ihn direkt dem Hinzufügen zuweisen.

Nach Auslassung

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

Recommended Posts

Anmerkung Nr. 6 "Berechnen Sie die Formel für die als Zeichenfolge empfangene einstellige Summendifferenz" [Java]
Ein Hinweis zum Initialisieren von Feldern im Java-Lernprogramm
Memorandum Nr. 4 "Holen Sie sich eine Zeichenkette und dekorieren Sie sie" [Java]
Lesen Sie die Datei unter dem Klassenpfad als Zeichenfolge mit spring
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Ruft die als Argument übergebene Zeichenfolge als Methode mit send auf
Hinweis Nr. 3 "Ersetzen Sie die eingegebene Zeichenfolge für jedes Zeichen abhängig von den Bedingungen."
Überprüfen Sie die Notizen für die Klasse java.util.Scanner
Überprüfen Sie die Notizen für die Klasse java.util.Optional
Ein Überprüfungshinweis für die Klasse java.util.Objects
Überprüfen Sie die Notizen für das Paket java.time.temporal
[Java] Unterschied zwischen gleich und == in einer Zeichenfolge, die ein Referenztyp ist
[Java] Hinweis zum Unterschied zwischen Äquivalenzbeurteilung und Gleichheitsbeurteilung beim Vergleich von String-Klassen
[Java] Schneiden Sie einen Teil der Zeichenfolge mit Matcher und regulären Ausdrücken aus