int Variablen werden verkettet anstatt innerhalb von System.out.println () hinzugefügt

7

Warum sind total_amount und tax_amount als Strings aneinandergereiht und nicht als Zahlen in der unteren println -Anweisung?

%Vor%     
dhaval joshi 17.10.2016, 07:45
quelle

3 Antworten

16

Das liegt an der Priorität des Operators. Grundsätzlich macht Ihr Code das Äquivalent von:

%Vor%

Wenn also total_amount 100 ist und tax_amount 20 ist, lautet das:

%Vor%

was wie folgt bewertet wird:

%Vor%

was wie folgt bewertet wird:

%Vor%

Optionen:

  • Verwenden Sie Klammern, um anzuzeigen, wie die Vorgänge gruppiert werden sollen:

    %Vor%
  • Führen Sie zuerst die Summierung durch und speichern Sie sie in einer neuen Variablen:

    %Vor%

Als Randnotiz empfehle ich:

  • Nach den Java-Namenskonventionen verwenden Sie camelCase anstelle von underscores_separating_words , z. taxAmount anstelle von tax_amount
  • Variablen genauer benennen - es ist seltsam, eine Variable namens total_amount zu haben, aber dann etwas anders mit der Bezeichnung Total amount zu drucken
  • Verwenden Sie hier eine statische Methode, da Sie die Felder in Ihrem Objekt nicht verwenden. (Diese Felder sind verwirrend, da Sie sie nicht verwenden.)

Wenn Sie auch Code formatieren, erhalten Sie:

%Vor%

(Sie sollten auch überlegen, was Sie für nicht-ganzzahlige Preise tun werden ... Ich würde entweder Ganzzahlen verwenden, aber die Anzahl der Cent / Pennies / was auch immer, oder BigDeciml zur Darstellung verwenden Preise.)

    
Jon Skeet 17.10.2016, 07:48
quelle
3

Java geht davon aus, dass Sie die Werte als Zeichenfolgen verketten möchten. Sie können dies verhindern, indem Sie Klammern verwenden:

%Vor%

Durch Hinzufügen der Klammern werden die beiden Werte hinzugefügt, bevor das Ergebnis der Addition und die "Total amount :" -Zeichenfolge verkettet werden.

    
Hexaholic 17.10.2016 07:48
quelle
2

Dies tun

%Vor%

entspricht dem Drucken

Die Verkettung von total_amount und tax_amount nach dem Zeichenfolgenliteral Gesamtbetrag:

, so dass dort keine mathematische Operation ausgeführt wird

total_amount enthält den Wert 100 und tax_amount 20 also die Ausgabe 10020

mache stattdessen

%Vor%     
quelle

Tags und Links