Ich baue gerade meine Taschenrechner-App.Alles funktioniert gut, außer Powder-Methode.Methode gerResultPow funktioniert nicht im Taschenrechner
Wenn ich klicken 8 + 5, und dann pow Methode, bekomme ich diese:
calculatorat E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.atlant.calculator.calculatorat, PID: 28984
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:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NumberFormatException: Invalid double: "7+7"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.initialParse(StringToReal.java:164)
at java.lang.StringToReal.parseDouble(StringToReal.java:282)
at java.lang.Double.parseDouble(Double.java:301)
at com.atlant.calculator.calculatorat.Calculator.getResultPow(Calculator.java:178)
at com.atlant.calculator.calculatorat.Calculator.onClickPow(Calculator.java:205)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
Es gibt kein Problem über Strings zu vergleichen, ich weiß, dass ich sie mit .equals vergleichen .Problem ist mit meinem 3. Fall von getResultPow.
Ich bekomme nur Fehler von 3. Fall in getResultPow (Wenn ich versuche, zwei Zahlen zu summieren und dann auf POW klicken) .POW funktioniert gut für 1.st und 2. Fall (Nummer eingegeben und dann angeklickt POW) .
Hier ist meine GitHub Repo: [https://github.com/adnxy/CalculatorAt][1]
Wer Anregungen?
Bellow ist mein onClickPow:
public void onClickPow(View v) {
if (display == "") return;
if (!getResultPow()) return;
{
_screen.setText(String.valueOf(result));
}
}
Meine getResultPow Methode mit drei Fällen: 1.st und 2.ten Fall arbeiten, aber wenn ich mich Fehler angezeigt dritten klicken.
//1.st case ,all empty, working fine
if (display == "" && currentOperator == "" && result == "") return false;
//2.nd case, entered number+pow, working fine
if (currentOperator == "" && result == "")
if (display != "") {
result = String.valueOf(Double.parseDouble(display) * Double.parseDouble(display));
}
//3rd. case, two numbers entered and pow clicked, exception
if (result == "")
if (display != "" && currentOperator != "") {
result = String.valueOf(String.valueOf(result)+Double.parseDouble(display) * Double.parseDouble(display));
return true;
}
[1]: https://github.com/adnxy/CalculatorAt
Die onClickPow() sieht nicht hier wenn Rückkehr, (getResultPow()!) { _screen.setText (String.valueOf (Ergebnis)); } Warum kehren Sie zurück und öffnen dann Klammern? – apkisbossin
@apkisbossin was ist los? Es funktioniert gut mit 1. und 2. Fall – sAdnan
Mein erster Vorschlag wäre, den Rest der Stack-Trace in Ihre Frage aufzunehmen, damit wir sehen können, was die Ursache der Ausnahme ist, die Sie bekommen. – azurefrog