2017-02-23 37 views
0

我正在嘗試使用Java中的Scanner類進行輸入。如何在Java掃描器中跳過分號

我的代碼是:

Scanner scan = new Scanner(System.in); 
String newline = scan.next(); 

我的輸入是這樣的:

india gate;25;3 

,我試圖取代以上一個新的字符串整個字符串:

new delhi;23;2 

使用

.replace(str1, str2) 

的問題是它只是替換的第一個字的字符串和輸出是一樣的東西:

india delhi;25;3 

我怎樣才能把它作爲使用Scanner整個字符串?

+0

使用';'作爲您的分隔符。 –

+0

請顯示您的所有代碼。 –

+0

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next(java.lang.String) 看到這個。 –

回答

0

您應該如何Scanner類作品閱讀起來。基本上默認情況下,它使用空格作爲next()的分隔符。這意味着當您撥打next()時,它會一直讀取,直到找到空白爲止,然後返回所讀取的內容。所以當你在"india gate;25;3"上撥打next()時,它讀取"india",然後命中一個空格。所以它會返回你"india"。如果你想閱讀,直到換行(它看起來像你),你想要使用nextLine()

+0

這就是我在我的答案中說,但她不同意。 :) –

+0

我認爲她與您的答案分裂在分號上的字符串問題。 – Neatname

+0

是的,她有一個空白問題。 –

1

使用;作爲分隔符這樣

while (scanner.hasNextLine()) { 
    lineScanner = new Scanner(scanner.nextLine()); 
    lineScanner.useDelimiter(";"); 
    String article = lineScanner.next(); 
    // and so on... 
} 
+0

謝謝基山,但使用;因爲分隔符會根據分割字符串;我不想分割我的字符串,而是保持它完好無損 –

+0

批准我的編輯,否則手動做自己的,以便別人不會感到困惑。 @NitikaJain –

+0

scan.usedelimeter正在放緩整個過程,實際上這個程序並沒有前進...... –

1

使用.replaceAll("india gate;25;3", "new delhi;23;2");

輸出

new delhi;23;2 
+0

輸入來動態你不能這樣做所有。 –

+0

如果輸入動態,那麼我們也可以正則表達式,但更具體的 –