2011-06-05 156 views
0

我創建了一個Scannersystem.in用逗號掃描字符串

如何讓輸入中能夠包含逗號,而無需進入下一個輸入?

例如:

System.out.print("Enter City, State."); 
String location = scan.nextLine(); 

因爲語言認爲我要進行下一掃描輸入的問題,我無法進入city,state。如何在掃描字符串中使用逗號?

*整個代碼

Scanner scan1 = new Scanner (System.in);

System.out.print ("City, State: "); 
String location1 = scan.nextLine(); 

System.out.print ("Enter number: "); 
number1 = scan.nextDouble(); 

System.out.print ("Enter number: "); 
number2 = scan.nextDouble(); 

System.out.print ("City, State: "); 
String name2 = scan1.nextLine(); 

System.out.print ("Enter #: "); 
number3 = scan.nextDouble(); 

System.out.print ("Enter #: "); 
number4 = scan.nextDouble(); 
+0

什麼編程語言? – Jonas 2011-06-05 22:12:26

+0

它是java。抱歉。 – Jimmy 2011-06-05 22:14:56

+0

用戶主要通過標籤瀏覽。請選擇標籤聰明,仔細吸引合適的人:) – BalusC 2011-06-05 22:16:37

回答

3

scan.nextLine();將返回整條生產線,逗號或不。

如果這不是發生了什麼,那麼問題必須在其他地方,你應該提供更多的代碼。

回覆:完整代碼:仍然有效。你遇到的錯誤/不需要的行爲是什麼?

我認爲正在發生的是nextLine()正在捕捉您之前輸入的行尾字符。

會發生什麼:

  • 假設你輸入一個數字,如12.5並按enter
  • Scanner現在讀取的緩衝區包含12.5\n其中\n是換行符。
  • Scanner.nextDouble只讀12.5\n留在緩衝區中。
  • Scanner.nextLine讀取該行的其餘部分,這只是\n並返回一個空字符串。這就是爲什麼它跳到下一個輸入:它已經閱讀「一條線」。

我會做些什麼來解決這個問題:

System.out.print ("City, State: "); 
String name2; 
do{ 
    name2 = scan1.nextLine(); 
}while(name2.trim().isEmpty()); 

什麼這個循環所做的就是一直讀取下一行,直到有比它的空白以外的東西線。

+0

*提供了整個代碼 – Jimmy 2011-06-05 22:31:54

+0

我試過了,我真的不知道什麼是不工作。 – trutheality 2011-06-05 22:50:45

+0

我現在看到我的問題。它處理nextLine,因爲輸出是輸入城市,州://輸入數字://輸入數字://輸入城市,州:輸入數字://最後一行在請求輸入時顯示在一起 - – Jimmy 2011-06-05 22:54:19

1

一個可能的解決方案:獲取下一行,然後使用String#split分割逗號(或者使用另一個將該String作爲輸入的Scanner對象)。如果只有一個逗號,那麼分割「,」會給你一個包含兩個字符串的數組。你需要修剪第二個字符串以擺脫空白,或者分裂一個更奇特的正則表達式。

0

您可以像上面提到的那樣使用split,也可以在下一行創建另一個掃描器,如果您有多個由「,」分隔的字段,這尤其有用。

System.out.print ("City, State: "); 
Scanner temp = new Scanner(scan.nextLine()); 
temp.useDelimiter(","); 
while(temp.hasNext()){ 
     //use temp.next(); 
     //Do whatever you want with the comma separated values here 
} 

但我仍然建議,如果你只是在看一些像「城市,國家」這樣簡單的東西,去拆分。

+0

如果他想這樣,他可以使用原始掃描儀的'.next()'。 – trutheality 2011-06-05 22:49:48

+0

我現在看到我的問題。它涉及nextLine由於輸出 輸入城市,州:// 輸入數字:// 輸入數字:// 輸入城市,州:輸入數字:// 其中最後一行顯示爲所以在一起詢問輸入 – Jimmy 2011-06-05 22:52:10

+0

@trutheality時,這是正確的,但正如我所說的,使用相同的掃描儀進行較大的測試用例可能不會很好。但正如你所提到的,在這種情況下,這是相當微不足道的。 – eerpini 2011-06-15 19:19:39