2016-09-02 8 views
0

Ich möchte ein int, double und string lesen und jedes zu einer Variablen hinzufügen, aber ich kann die Zeichenfolge nicht lesen.Lesevorgang String mit Scanner

int i = 4; 
double d = 4.0; 
String s = "My name is "; 
Scanner scan = new Scanner(System.in); 
int i2 = scan.nextInt(); 
double d2 = scan.nextDouble(); 
String s2 = scan.nextLine();   
System.out.println(i+i2); 
System.out.println(d+d2); 
System.out.println(s + s2); 
scan.close(); 

mein Verständnis ist, dass scan.nextLine() einen String liest, aber es springt es einfach. scan.next() liest nur das erste Wort. es funktioniert, wenn ich scan.nextLine(); vor String str2 = scan.nextLine(); hinzugefügt, aber ich weiß nicht, warum

+0

Readline- lesen alle Inhalte bis zur nächsten EOL – Jens

+0

können Sie den Eingang teilen Sie – xxlali

+1

Werfen Sie einen Blick auf diese nutzen könnten: http://stackoverflow.com/questions/13102045/scanner- is-skipping-nextline-nach-using-next-nextint-or-other-nextfoo – uoyilmaz

Antwort

-1

für die Eingabe

2.4 
"Some String" 

Wenn Sie verwenden nur 2,4 nextdouble nicht die EndOfLine gerichtet (nach 2.4 und vor "Some String".). Daher funktioniert Ihr Code mit 2 nextLine().

Sie auch

int i2 = Integer.parseInt(scan.nextLine()); 
double d2 = Double.parseDouble(scan.nextLine()); 
String str2 = scan.nextLine(); 
+0

'Die Methode parseInt (String) im Typ Integer ist nicht anwendbar für die Argumente (int)' – joc

+0

Danke @joc, bearbeitet :) –

+0

@Lokesh Agrawal Verstanden. Vielen Dank. – Steven