我試圖字符串解析成雙層,我不知道這是否是做了正確的方式。如果有人能幫我檢查一下,並給出反饋,我會非常感激。
下面的代碼:
String amount = enterAmount.getText().toString();
double subtotal = Double.valueOf(amount).doubleValue();
預先感謝您的盛情意見。
我試圖字符串解析成雙層,我不知道這是否是做了正確的方式。如果有人能幫我檢查一下,並給出反饋,我會非常感激。
下面的代碼:
String amount = enterAmount.getText().toString();
double subtotal = Double.valueOf(amount).doubleValue();
預先感謝您的盛情意見。
String amount = enterAmount.getText();
double subtotal = Double.parseDouble(amount);
你可以嘗試
double subtotal = Double.parseDouble(amount);
你應該把這個包呼叫周圍try-catch
塊和處理NumberFormatException
如果字符串不能被解析爲Double
將被拋出。
你也可以試試這個。
double subtotal = Double.parseDouble(amount);
我做什麼,是(使用JFormattedTextField
或JTextField
時)更換所有的逗號的由點和刪除空格:
String amount = enterAmount.getText();
amount = amount.replace(",",".").replace(" ", "");
double subtotal = Double.parseDouble(amount);
這意味着下面的輸入將工作:
12
1,2
1.2
200 000
200 000,01
逗號用於很多歐洲國家:Wikipedia
藍色=點;
Green =逗號;
紅色= Momayyez(/)
你應該使用一些邏輯,以確定它是否是一個有效的數字。下面是用於測試整數的函數:
public static int validateInteger(String number) { int i = -1; try { i = Integer.parseInt(number); } catch (NumberFormatException nfe) {} catch (NullPointerException npe) {} return i; }
你的情況,你必須改變的Integer.parseInt()函數到任何你想要的類型。
如果輸入'-1'並且這是有效的,該怎麼辦? –
該功能在您無法更改它的意義上不是靜態的。如果你想允許數字-1那麼這當然是非常好的。選擇另一個返回值,即任何數字,輸入正確的數字的概率非常低。我使用這個函數來測試一個端口號是否有效,並且由於負數不能用作端口號,所以-1就是一個很好的指示。 –
你是對的,可以使用任何無效值。你可以返回一個long,或者你可以拋出NumberFormatException,讓調用者捕獲它而不是檢查值。 –
如果你想成爲國際,你應該這樣做:
DecimalFormat.getNumberInstance(Locale).parse(numberAsString).doubleValue()
歡迎StackOverflow上。當答案幫助你解決了問題時,你應該通過點擊答案旁邊的勾號來接受答案。 –