2016-06-28 5 views
0

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 
+0

Die onClickPow() sieht nicht hier wenn Rückkehr, (getResultPow()!) { _screen.setText (String.valueOf (Ergebnis)); } Warum kehren Sie zurück und öffnen dann Klammern? – apkisbossin

+0

@apkisbossin was ist los? Es funktioniert gut mit 1. und 2. Fall – sAdnan

+1

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

Antwort

0

Siehe den dritten Fehler. Sie versuchen, den String 7+7 zu verdoppeln. Versuchen Sie zu schreiben:

Double pow = Double.parseDouble(display) * Double.parseDouble(display); 
result = String.valueOf(Double.parseDouble(Double.parseDouble(result)+pow)); 
+0

Danke für die Hilfe. Ich bekomme immer noch Fehler – sAdnan

+0

Das gleiche? Oder ist es anders? Versuchen Sie, die Logcat-Ausgabe zu lesen und zu sehen, was falsch wäre. –

+0

Dies ist, wenn der 3. Fall gerade jetzt: (Anzeige! = "" && currentOperator! = "" && result == "") { Log.d ("Trecu slucaj radi", "radi3"); Log.d ("Display prikaz broj3", Anzeige); Double pow = Double.parseDouble (Anzeige) * Double.parseDouble (Anzeige); Ergebnis = String.valueOf (Double.parseDouble (String.valueOf (Double.parseDouble (Ergebnis) + pow))); Log.d ("Rezultat treceg slucaja3", Ergebnis); Rückkehr wahr; } – sAdnan

Verwandte Themen