2016-09-24 69 views
0

我的輸入將是提供在Java中使用掃描儀輸入的多行

12 
4.0 
has to be concatenated with this input 

我的預期輸出是

16 
8.0 
RandomString has to be concatenated with this input 
如下

我它試圖做到這一點是代碼

 int i = 4; 
     double d = 4.0; 
     String s = "RandomString"; 

     Scanner scan = new Scanner(System.in); 
     int j = scan.nextInt(); 
     double e = scan.nextDouble(); 
     String str = scan.nextLine(); 
     int resInt = i + j; double resDouble = d + e; String resString = s +" "+ str; 
     System.out.println(resInt); 
     System.out.println(resDouble); 
     System.out.println(resString); 

     scan.close(); 

這表現有所不同。只要我輸入兩行輸入,它就會給我輸出。不等待我的輸入的第三行。所以現在我的輸出是

12 
4.0 
16 
8.0 
RandomString 

回答

1

原始數據類型如int,double不消耗回車鍵/行結束。這就是爲什麼在keying整數之後的輸入類型被作爲nextLine()的緩衝區的值。

如果您想在nextInt()和nextLine()中使用相同的掃描儀對象,則效果不佳。

有兩種解決方案,解決方案是創建另一個掃描器讀取字符串或給出額外的nextLine(),然後嘗試讀取隨機字符串,如下所示。

Scanner scan = new Scanner(System.in); 
int j = scan.nextInt(); 
double e = scan.nextDouble(); 
scan.nextLine(); 
String str = scan.nextLine();