简体   繁体   中英

How can i print native symbols on my android application?

I made a square root calculator on android platform. I added different language in my app and my issue starts from here.

In languages with different symbols, like Chinese, I can print symbols. But when I touch to calculate button, app shuts down. I think issue starts with native symbols calculate.

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

Double.Parse does not work with native languages as the string is parsed to double by checking each character in string with '0','1','2' characters.

you will have to parse it yourself calculate and parse back to native and print

First of all, use try { ... } catch (NumberFormatException e) { ... } to prevent app crash. Show an error message if you cannot convert data.

At second,

Best way to parseDouble with comma as decimal separator?

How do I convert a String to Double in Java using a specific locale?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM