2013-01-05 53 views

回答

6

使用Integer.valueOf

int i = Integer.valueOf(someString); 

(還有其他的選擇也是如此。)

+0

是的,那會的。 謝謝 –

+2

這將工作,但有不必要的拳擊和拆箱。最好使用'Integer.parseInt(...)'作爲原始的'int'。 – msandiford

+0

是的。根據文檔,valueOf返回一個** Integer Object **,而parseInt返回一個**原始的int **,這就是你想要的。 (http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String%29) – wullxz

3

看靜態方法Integer.parseInt(String string)。此方法過載,並且還能夠讀取除十進制系統之外的其他數字系統中的值。如果string不能被解析爲整數,該方法將引發它可以釣到作爲NumberFormatException如下:

string = "1234" 
try { 
    int i = Integer.parseInt(string); 
} catch (NumberFormatException e) { 
    System.err.println(string + " is not a number!"); 
} 
2

除了什麼戴夫wullxz說,你也可以用戶正則表達式查找如果測試過的字符串符合你的格式,例如

import java.util.regex.Pattern; 
... 

String value = "23423423"; 

if(Pattern.matches("^\\d+$", value)) { 
    return Integer.valueOf(value); 
} 

使用正則表達式,你也可以恢復其他類型的數字,如雙打,例如,

String value = "23423423.33"; 
if(Pattern.matches("^\\d+$", value)) { 
    System.out.println(Integer.valueOf(value)); 
} 
else if(Pattern.matches("^\\d+\\.\\d+$", value)) { 
    System.out.println(Double.valueOf(value)); 
} 

我希望這將有助於解決您的問題。

編輯

此外,由wullxz建議,你可以使用Integer.parseInt(String)代替Integer.valueOf(String)parseInt返回intvalueOf返回Integer實例。從性能角度來看,推薦使用parseInt

+1

我建議你改變你的使用'valueOf'分別爲'parseInt'和'parseDouble'。 (請參閱** Dave **的回答下的評論) – wullxz

+0

@wullxz非常好;從性能角度來看,推薦使用該方法(+1)。 – Tom

相關問題