2016-04-05 8 views
-1

Heute begann Java zu lernen und ich brauche Hilfe, um meine Zweifel zu beseitigen.richtige Syntax in system.out.prinln()

import java.util.Scanner; 

public class JavaApplication1 { 
    public static void main(String[] args) { 
     Scanner leo = new Scanner(System.in); 
     double f, s; 
     System.out.println("Enter first number: "); 
     f = leo.nextDouble(); 
     System.out.println("Enter second number: "); 
     s = leo.nextDouble(); 
     System.out.println("The sum is " + f + s); 
    } 
} 

Wenn ich schreibe +f+s dann werden beide als String behandelt.

Enter first number: 2 
Enter second number: 5 
The sum is 2.05.0 

Aber wenn ich schreibe (f+s) dann werden sie als doubles behandelt (was das gewünschte Ergebnis ist).

Enter first number: 3 
Enter second number: 4 
The sum is 7 

Warum passiert das?

Auch warum schreiben wir die Zeile import java.util.Scanner vor der class JavaAapplication1?

P.S. Ist diese Serie von Videos Video Link gut zum Lernen von Java?

+0

Es gilt nicht als Zeichenfolge. Da der Operator + von links nach rechts ausgewertet wird, addiert er zuerst die Zeichenfolge und die erste Zahl und fügt dann die zweite Zahl zur Ergebniszeichenfolge hinzu. –

+1

Bearbeiten Sie Ihre Frage, um den relevanten Quellcode als Text in die Frage aufzunehmen. Verknüpfen Sie nicht mit Code (oder Bilder von Code) auf einer anderen Website. – Kenster

+0

'import' ist erforderlich, um' Scanner' ohne seinen Paketnamen zu verwenden. Der Compiler wird alle Verweise auf "Scanner" durch "java.util.Scanner" ersetzen. Sie können 'import' ablegen und' java.util.Scanner' in der lokalen Variablendeklaration und Objektinstanziierung verwenden. –

Antwort

3

Ich vermute, dass das, was zählt, ist die Reihenfolge der Operation

In

System.out.println("The sum is:"+f+s) 

Die erste Operation ist "The sum is:"+f so der Operator + nimmt einen String und ein Doppel als Operanden und der f-Variable wird gegossen sein Stringwert. Dann nimmt der Operator second + "Die Summe ist: 2" +0.5 und wir haben wieder eine Umwandlung von Double in String.

jedoch in

System.out.println("The sum is:"+(f+s)) 

Wir haben zuerst + s calcualted f, die eine Addition zwischen zwei durch eine Verkettung anschließend verdoppelt.

Ich hoffe, das macht Sinn.

2

Es ist die BODMAS Regel, die für Brackets steht, Orden, Dividieren, Multiplizieren, Addition, Subtraktion

Da Sie sie in Klammern nicht hinzufügen, fügt es (verkettet) die Zeichenfolge. Er wertet alles innerhalb der Klammer

("string" + f + s) 

Sofern Sie nicht ausdrücklich Klammern hinzufügen

("string" + (f + s)) 

In diesem Fall sind die inneren Klammern zuerst und dann die äußere ausgewertet werden.

Auch warum schreiben wir die Zeile import java.util.scanner vor der Klasse Java-Anwendung 1?

Um das importierte Zeug in der Klasse zu verwenden, müssen Sie vor der Klasse importieren, damit der Compiler weiß.

Verwandte Themen