2016-08-24 190 views
0

我希望有一個程序在java中接受分別掃描儀nextLine Java錯誤

1.Integer

2.雙

3.String 。 並顯示以上。

但我面臨的問題是我輸入整數後,它的雙倍不提示我輸入字符串。它直接顯示值。 當我搜索SOLN這一點,我才知道那

scan.nextLine(); 

應後,我接受了雙重價值被使用。

誰能告訴我爲什麼要用這條線。 我閱讀nextLine的文檔。但我不明白。

import java.util.Scanner; 

public class Solution { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     int i = scan.nextInt(); 
     double d = scan.nextDouble(); 
     // scan.nextLine();   **Why should I write this ??** 
     String s = scan.nextLine(); 

     System.out.println("String: " + s); 
     System.out.println("Double: " + d); 
     System.out.println("Int: " + i); 
    } 
} 
+0

,因爲它需要新的行字符作爲輸入字符串。 –

+0

只是問,當你插入一個Double時,你的數字是什麼? –

+0

[Scanner在使用next(),nextInt()或其他nextFoo()方法之後跳過nextLine()的可能的副本(http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after- using-next-nextint-or-other-nextfoo) –

回答

2

根據nextLine()的javadoc:

此掃描器執行當前行,並返回輸入的是 被跳過。此方法返回當前行的其餘部分,排除末尾的任何行分隔符,即 。該位置設置爲下一行開頭的 。

輸入double值後,nextLine()會讀取包含雙數的行上的餘數。這就是爲什麼你需要另一個nextLine()作爲輸入字符串。

使用next()會解決你的問題:

Scanner scan = new Scanner(System.in); 
int i = scan.nextInt(); 
double d = scan.nextDouble(); 
String s = scan.next(); 

System.out.println("String: " + s); 
System.out.println("Double: " + d); 
System.out.println("Int: " + i); 
+0

謝謝。我認爲,雙重後,它只是去下一行。 – Prajwal