我只是碰到了這個小問題,我想在這個的Java:(INT)(浮點)Float.valueOf(S)或Float.valueOf(S).toInt()
我其他人的輸入徘徊什麼將一個字符串轉換成最佳的解決方案的int
(int)(float)Float.valueOf(s)
或
Float.valueOf(s).toInt()
s是從一個文本框inputed一個字符串,所以我不能保證它一定是一個int
我的直覺是雙投是醜的,應該避免
您的輸入?
我只是碰到了這個小問題,我想在這個的Java:(INT)(浮點)Float.valueOf(S)或Float.valueOf(S).toInt()
我其他人的輸入徘徊什麼將一個字符串轉換成最佳的解決方案的int
(int)(float)Float.valueOf(s)
或
Float.valueOf(s).toInt()
s是從一個文本框inputed一個字符串,所以我不能保證它一定是一個int
我的直覺是雙投是醜的,應該避免
您的輸入?
你的要求不明確的:
如果你期待一個整數,不想讓用戶輸入一個數字,在這一個小數點,只需使用Integer.valueOf(String)
或Integer.parseInt(String)
,趕上NumberFormatException
。
如果要允許帶小數點的數字,請使用Float.valueOf(String)
或Float.parseFloat(String)
。
如果您只是想截斷float
到int
然後要麼Float.intValue()
或兩個石膏是等價的。如果要舍入到最接近int
,使用Math.round()
而不是投(用於intValue
的Javadoc明確指出這一點。)
。
你應該抓住NumberFormatException
你採取任何方式,因爲用戶可以進入垃圾不是一個有效的基本-10號(帶或不帶小數點)......或者超出範圍的數字類型。我想你可以使用正則表達式或其他方法在嘗試轉換它之前檢查字符串,但是讓異常發生並處理它是比較簡單的。異常效率問題不太可能是實際的。關注在這個用例)
在你原來的問題是否intValue()
是不是兩個石膏更好:這是一個風格問題。根據javadoc,這兩種方法做同樣的事情。這可能是一個會稍微比其他更有效,但:
您應該使用Integer.valueOf(..)
,並抓住NumberFormatException
(如果字符串不能被解析爲整數)。
的Integer.parseInt(串)將是最好的
int x = Integer.parseInt(s);
建議最好檢查字符串調用此之前,一個int。
正如其他人所指出的,它只是風格不事表現......但如果你擔心性能,你應該使用正則表達式
^[0-9]*$
驗證在瀏覽器本身由JavaScript文本字段數據這將只允許將整數提交給後端代碼,從而避免一次網絡旅程,從而提高性能。您仍然應該驗證後端數據,因爲您可以使用
Integer.parseInt(String s) throws NumberFormatException