java - 如何在 Android 应用程序上打印 native 符号?

标签 java android android-ndk symbols math.sqrt

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

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

部分代码

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

Logcat

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

最佳答案

Double.Parse 不适用于 native 语言,因为通过检查字符串中的每个字符是否包含“0”、“1”、“2”字符,将字符串解析为 double 。

你必须自己解析它,计算并解析回 native 并打印

关于java - 如何在 Android 应用程序上打印 native 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33408279/

相关文章:

Java 项目正在运行,但是当我尝试构建它时,在startsWith (NetBeans) 处出现 NullPointerException

java - 程序找不到文件

java - 如何在java中获取cql日期?

android - 单击图表中的数据点时如何在 toast 中显示 x 轴日期?

java - 检索 JTextField 文本值

Android 保护 mp3 文件不被共享,但仍然可以播放

android - 在我的 Android 应用程序中从前置摄像头录制时无法获得高 fps(每秒帧数)速率(大约 30fps)

android - 在android ndk中链接so文件

android - 在 Android 中从 SDK 28 迁移到 SDK 29 后,我的应用程序崩溃并面临 : signal 11 (SIGSEGV), 代码 2 (SEGV_ACCERR),Android studio 3.4.1 中的错误

android - React-Native:错误类型 3:Activity 类不存在