2011-05-13 42 views

回答

7

你的要求不明確的:

  • 如果你期待一個整數,不想讓用戶輸入一個數字,在這一個小數點,只需使用Integer.valueOf(String)Integer.parseInt(String),趕上NumberFormatException

  • 如果要允許帶小數點的數字,請使用Float.valueOf(String)Float.parseFloat(String)

    • 如果您只是想截斷floatint然後要麼Float.intValue()或兩個石膏是等價的。如果要舍入到最接近int,使用Math.round()而不是投(用於intValue的Javadoc明確指出這一點。)

你應該抓住NumberFormatException你採取任何方式,因爲用戶可以進入垃圾不是一個有效的基本-10號(帶或不帶小數點)......或者超出範圍的數字類型。我想你可以使用正則表達式或其他方法在嘗試轉換它之前檢查字符串,但是讓異常發生並處理它是比較簡單的。異常效率問題不太可能是實際的。關注在這個用例)


在你原來的問題是否intValue()是不是兩個石膏更好:這是一個風格問題。根據javadoc,這兩種方法做同樣的事情。這可能是一個會稍微比其他更有效,但:

  1. 不應該是爲您的使用情況的擔憂,並
  2. 只有這樣,才能知道肯定會個人資料你的執行平臺上的兩種選擇...坦白說,這是不值得的努力。
1

您應該使用Integer.valueOf(..),並抓住NumberFormatException(如果字符串不能被解析爲整數)。

0

的Integer.parseInt(串)將是最好的

int x = Integer.parseInt(s); 

建議最好檢查字符串調用此之前,一個int。

0

正如其他人所指出的,它只是風格不事表現......但如果你擔心性能,你應該使用正則表達式

^[0-9]*$ 

驗證在瀏覽器本身由JavaScript文本字段數據這將只允許將整數提交給後端代碼,從而避免一次網絡旅程,從而提高性能。您仍然應該驗證後端數據,因爲您可以使用

Integer.parseInt(String s) throws NumberFormatException 
相關問題