System.out.println(etInput.getText().toString());
float myWeight = Float.valueOf(etInput.getText().toString());
嗨,
第二行是在float中转换一个String值(这是一个String,因为我可以在控制台中打印它)但是我得到一个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)
答案 0 :(得分:2)
方法Float.valueOf
的输入必须是有效的浮点数。因此,请确保etInput.getText().toString()
返回包含有效浮点数的字符串,即仅包含数字和最多一个小数点。一个普遍的问题是尾随空格,因此调用etInput.getText().toString().trim()
上的修剪以避免由此引起的任何错误。
答案 1 :(得分:1)
如果s没有FloatValue的形式,则抛出NumberFormatException。
显然,etInput.getText().toString()
不是浮点数的有效字符串表示形式。
答案 2 :(得分:0)
String不是float-number,也不是null。
答案 3 :(得分:0)
使用
Float.parseFloat(etInput.getText().toString());
答案 4 :(得分:0)
float myWeight = Float.valueOf(etInput.getText().toString());
如果输入字符串“a”而不是总是会抛出错误,我也会想到空字符串。
做一个
try{
float myWeight = Float.parseFloat(etInput.getText().toString());
catch(NumberFormatException e){
}
至少。
答案 5 :(得分:0)
好的,根本无法调用valueOf()上的方法,你必须放一个变量。
w = etInput.getText().toString();
float myWeight = Float.valueOf(w);
答案 6 :(得分:0)
怎么样
try {
Float.parseFloat(etInput.getText().toString());
} catch (NumberFormatException e) {
e.printStackTrace();
}