2015-10-29 6 views
1

Я сделал калькулятор квадратного корня на платформе Android. Я добавил другой язык в свое приложение, и моя проблема начинается здесь.Как я могу печатать собственные символы в приложении для Android?

В языках с разными символами, например, на китайском, я могу печатать символы. Но когда я прикасаюсь к кнопке расчета, приложение отключается. Я думаю, что проблема начинается с вычисления собственных символов.

Часть кода

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 

ответ

0

Double.Parse не работает с носителями языка как строка обрабатывается в два раза, проверяя каждый символ в строке с символами '0', '1', '2'.

вам придется разобрать его самостоятельно рассчитать и проанализировать обратно в родной и распечатать

+0

, как я могу это сделать? –

0

Прежде всего, используйте try { ... } catch (NumberFormatException e) { ... }, чтобы предотвратить крах приложения. Показывать сообщение об ошибке, если вы не можете преобразовать данные.

Во-вторых,

Best way to parseDouble with comma as decimal separator?

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

Смежные вопросы