可能重複:
How to convert string to int in Java?我可以讀取一個字符串,然後將其用作整數嗎?
我的代碼應該讀字符串,然後採取相應的行動,但如果字符串是數字的行,我需要這條線作爲一個完整的數字(一個int)不能再作爲字符串了。可以這樣做嗎?
可能重複:
How to convert string to int in Java?我可以讀取一個字符串,然後將其用作整數嗎?
我的代碼應該讀字符串,然後採取相應的行動,但如果字符串是數字的行,我需要這條線作爲一個完整的數字(一個int)不能再作爲字符串了。可以這樣做嗎?
看靜態方法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!");
}
除了什麼戴夫和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
返回int
而valueOf
返回Integer
實例。從性能角度來看,推薦使用parseInt
。
是的,那會的。 謝謝 –
這將工作,但有不必要的拳擊和拆箱。最好使用'Integer.parseInt(...)'作爲原始的'int'。 – msandiford
是的。根據文檔,valueOf返回一個** Integer Object **,而parseInt返回一個**原始的int **,這就是你想要的。 (http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String%29) – wullxz