2014-01-16 31 views
0

到目前爲止,我有一個代碼要求用戶輸入,但部分代碼不接受字母作爲輸入。例如,如果我輸入說woah123它會給我一個數字格式異常。任何方式來解決這個問題?錯誤在第二行int i = Integer.parseInt(句子)。 句子是用戶輸入代碼不允許用戶輸入字母

sentence.replaceAll("\\D", ""); 
int i = Integer.parseInt(sentence); 
i = i * 2 ; 
woah.replaceAll("\\d", "" + i); 
System.out.println(woah); 
+7

字符串是不可變的。它應該是'sentence = sentence.replaceAll(「\\ D」,「」);' –

+1

@ZouZou將它作爲答案 –

+1

@ZouZou對於'woah'來說同樣的事情。 – rgettman

回答

6

字符串是不可變的。

通常,對不可變對象所做的每個修改都會「給」你另一個不可變對象。

所以它應該是:

sentence = sentence.replaceAll("\\D", ""); 

事實上,你必須爲woah這樣做。

你可以閱讀什麼是immutable object

+1

假設OP可能是Java /編程[不可變對象](http://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html)中的新手段,表示您在此對象上調用的每個方法都不會更改它的狀態(不會影響它),可選地,它會給你帶有改變狀態的同一類型的新對象。在這種情況下,由於String是不可變的,所以'replaceAll'會給你帶有改變字符的新的String對象,但不會影響原來的字符串,所以如果你想更新'sentence'引用,你需要將'replaceAll'的結果賦值給這個引用鄒鄒在回答中顯示。 – Pshemo