1

我在android平台上做了一个平方根计算器。我在我的应用程序中添加了不同的语言,我的问题从这里开始。

在具有不同符号的语言中,例如中文,我可以打印符号。但是当我触摸计算按钮时,应用程序会关闭。我认为问题始于本机符号计算。

部分代码

Double result;
textview show_result
result = Math.sqrt(Double.parseDouble(process.getText().toString()));
show_result.setText(result.toString());

日志猫

10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime: FATAL EXCEPTION: main
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime: Process: ahmetgoksu.com.squareroot, PID: 11031
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime: java.lang.NumberFormatException: Invalid double: "١"
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at java.lang.StringToReal.parseDouble(StringToReal.java:269)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at java.lang.Double.parseDouble(Double.java:295)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at ahmetgoksu.com.squareroot.SquareRootSecondPage$1.onClick(SquareRootSecondPage.java:66)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at android.view.View.performClick(View.java:4438)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at android.view.View$PerformClick.run(View.java:18422)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:136)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5001)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:515)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-29 03:26:34.946 11031-11031/ahmetgoksu.com.squareroot E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
10-29 03:26:34.950 705-865/system_process D/: HostConnection::get() New Host Connection established 0xb840c870, did 865
4

2 回答 2

0

Double.Parse 不适用于本地语言,因为通过使用 '0'、'1'、'2' 字符检查字符串中的每个字符来将字符串解析为双精度。

你将不得不自己解析它计算并解析回本机并打印

于 2015-10-29T07:48:37.420 回答
0

首先,try { ... } catch (NumberFormatException e) { ... }用于防止应用程序崩溃。如果您无法转换数据,则显示错误消息。

第二,

用逗号作为小数分隔符解析Double的最佳方法?

如何使用特定语言环境在 Java 中将 String 转换为 Double?

于 2015-10-29T08:18:32.960 回答