0
System.out.println(etInput.getText().toString());
float myWeight = Float.valueOf(etInput.getText().toString());

你好,

第二行是在浮点中转换一个字符串值(这是一个字符串,因为我可以在控制台中打印它)但我得到一个 NumberFormatException ...

关于如何发生这种情况的一些想法?

堆:

08-22 15:03:38.521: E/AndroidRuntime(15341): FATAL EXCEPTION: main
08-22 15:03:38.521: E/AndroidRuntime(15341): java.lang.NumberFormatException: 
08-22 15:03:38.521: E/AndroidRuntime(15341):    at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at java.lang.Float.parseFloat(Float.java:323)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at java.lang.Float.valueOf(Float.java:362)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at com.mikele.dietmonitor.activity.MainActivity$2.onClick(MainActivity.java:120)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at android.view.View.performClick(View.java:2538)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at android.view.View$PerformClick.run(View.java:9152)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at android.os.Handler.handleCallback(Handler.java:587)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at android.os.Looper.loop(Looper.java:130)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at android.app.ActivityThread.main(ActivityThread.java:3691)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at java.lang.reflect.Method.invokeNative(Native Method)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at java.lang.reflect.Method.invoke(Method.java:507)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
08-22 15:03:38.521: E/AndroidRuntime(15341):    at dalvik.system.NativeStart.main(Native Method)
4

7 回答 7

2

方法的输入Float.valueOf必须是有效的浮点数。所以请确保etInput.getText().toString()返回一个包含有效浮点数的字符串,即只有数字和最多一个小数点。一个普遍的问题是尾随空格,因此请调用 trimetInput.getText().toString().trim()以避免任何错误。

于 2013-08-22T13:09:09.433 回答
1

文档中:

如果 s 不具有 FloatValue 的形式,则抛出 NumberFormatException。

显然,etInput.getText().toString()它不是浮点数的有效字符串表示形式。

于 2013-08-22T13:09:58.087 回答
0

字符串不是浮点数或为空。

于 2013-08-22T13:07:50.467 回答
0

采用

Float.parseFloat(etInput.getText().toString());
于 2013-08-22T13:07:52.820 回答
0
float myWeight = Float.valueOf(etInput.getText().toString());

如果你输入一个字符串“a”,它总是会抛出一个错误,我也认为空字符串也是如此。

做一个

try{
    float myWeight = Float.parseFloat(etInput.getText().toString());
catch(NumberFormatException e){
}

至少。

于 2013-08-22T13:09:35.103 回答
0

好的,根本无法在 valueOf() 上调用方法,您必须放置一个变量。

w = etInput.getText().toString();
float myWeight = Float.valueOf(w);
于 2013-08-22T13:10:20.923 回答
0

怎么样

    try {
        Float.parseFloat(etInput.getText().toString());
    } catch (NumberFormatException e) {
        e.printStackTrace();
    }
于 2013-08-22T13:16:42.233 回答