1

在輸入帶小數點的值時,出現以下代碼問題。無論我輸入56還是56.3或56.345都無關緊要,它仍會使應用程序崩潰並引發NumberFormatException。Android - NumberFormatException問題

這裏就是異常被拋出代碼:

private boolean isNumeric(String str) { 
    try{ 
     Float.parseFloat(str); 
    } 
    catch(NumberFormatException e) { 
     return false; 
    } 
    return true; 
} 

下面是從logcat的異常:

05-14 08:54:08.127 31142-31142/com.ritchieengineering.yellowjacket E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.ritchieengineering.yellowjacket, PID: 31142 
java.lang.NumberFormatException: Invalid int: "2.5" 
     at java.lang.Integer.invalidInt(Integer.java:137) 
     at java.lang.Integer.parse(Integer.java:374) 
     at java.lang.Integer.parseInt(Integer.java:365) 
     at java.lang.Integer.parseInt(Integer.java:331) 
     at java.lang.Integer.valueOf(Integer.java:489) 
     at com.ritchieengineering.yellowjacket.fragment.TargetSubcoolingFragment.isValidValue(TargetSubcoolingFragment.java:164) 
     at com.ritchieengineering.yellowjacket.fragment.TargetSubcoolingFragment.onOptionsItemSelected(TargetSubcoolingFragment.java:89) 
     at android.app.Fragment.performOptionsItemSelected(Fragment.java:1806) 
     at android.app.FragmentManagerImpl.dispatchOptionsItemSelected(FragmentManager.java:1978) 
     at android.app.Activity.onMenuItemSelected(Activity.java:2711) 
     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1094) 
     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 
     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
     at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:645) 
     at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:210) 
     at android.view.View.performClick(View.java:4637) 
     at android.view.View$PerformClick.run(View.java:19422) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5586) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
     at dalvik.system.NativeStart.main(Native Method) 

我能做些什麼來保持這種異常被拋出時,我輸入56.3或56.345?我怎樣才能確保人們只輸入像56.3那樣的一位小數點的值?任何幫助,將不勝感激。

+0

請發送您的例外日誌。 – NarendraJi

+0

而你的默認語言環境是... ??? – eduyayo

回答

1

聽起來好像您的本地文化被設置爲使用,作爲小數點分隔符而不是.。您可以使用NumberFormat明確設置您的本地文化:

NumberFormat format = NumberFormat.getInstance(Locale.FRENCH); 
Number number = format.parse("1,234"); 
float f = number.floatValue();