Java 将字符串解析为双精度时发生异常(NumberFormateException)
我尝试过堆栈溢出的其他解决方案,但没有成功 我试图从EditText获取文本并将其解析为double,但这会导致java.lang.NumberFormatException的错误。请帮忙 这是我的密码:Java 将字符串解析为双精度时发生异常(NumberFormateException),java,android,Java,Android,我尝试过堆栈溢出的其他解决方案,但没有成功 我试图从EditText获取文本并将其解析为double,但这会导致java.lang.NumberFormatException的错误。请帮忙 这是我的密码: public double func(double x) { String equation = equ.getText().toString(); Double equ = Double.parseDouble(equation); return equ; } 我得
public double func(double x) {
String equation = equ.getText().toString();
Double equ = Double.parseDouble(equation);
return equ;
}
我得到的例外是:
11-07 00:32:40.959 25643-25643/com.example.anum.numarics E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:4212)
at android.view.View$PerformClick.run(View.java:17476)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5392)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4212)
at android.view.View$PerformClick.run(View.java:17476)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5392)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NumberFormatException: Invalid double: "x*x-2.0"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.parseDouble(StringToReal.java:269)
at java.lang.Double.parseDouble(Double.java:295)
at com.example.anum.numarics.MainActivity$1.func(MainActivity.java:77)
at com.example.anum.numarics.MainActivity.bisection(MainActivity.java:41)
at com.example.anum.numarics.MainActivity.calculate(MainActivity.java:81)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4212)
at android.view.View$PerformClick.run(View.java:17476)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5392)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:838)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
Double.parseDouble
实际上不会为您做任何计算。您正在将x*x-2.0
作为字符串传入,这显然不是一个数字,并导致了此异常。很抱歉,但是在java.lang.NumberFormatException:Invalid double:“x*x-2.0”
?也许您应该重新阅读javadoc:“x-2.0”是我在文本中输入的输入,带有id“eq”@我们不知道,但我们想知道为什么你认为这是一个数字。@Lothar,现在我知道了,并找到了另一种方法:)