Laden...

Abfangen von "Falschen" eingaben

Erstellt von Nexmo vor 2 Jahren Letzter Beitrag vor 2 Jahren 252 Views
N
Nexmo Themenstarter:in
36 Beiträge seit 2021
vor 2 Jahren
Abfangen von "Falschen" eingaben

Hallo zusammen,

ich habe folgendes Problem ( Nachbau eines Win-10 Taschanrechners mit Win-Form-App (.NET Framework)):
wenn ich jetzt eine zahl eingeben und dann die Opperator taste drücke, dann verlangt er nach einer weiteren Zahl.
Wenn ich nun aber feststelle, dass ich den Falschen Opperator geklickt habe, so möchte ich diesen durch drücken des richtigen Opperators ändern(so wie im Win-10 rechner auch).
Folgende Lösungsansätze habe ich schon versucht:
try-catch um die double a Variabel, wo diese Geparst wird. ---> Programm hängt sich auf und reagiert gar nicht mehr. Keine Fehlermeldung.
Versucht im Anschluss mit einer Sprungmarke zu arbeiten --> selbiges Problem.

Jetzt ist meine Frage, wo ist mein Denkfehler.
Hab ich das Abfangen der falschen Eingabe zu früh/zu spät angesetzt?
Gibt es eine alternative Möglichkeit?

Unten ist der Auszug aus dem Code, den es betrifft.


private void opperator_click(object sender, EventArgs e)        //Rechenopperationen ausführen
        {
        
            Button b = (Button)sender;
           
                
            opperation_pressed = true;
            opperatoren = b.Text;
            double a = Parsewert(Anzeigefeld.Text);

                if (value == 0)
                {
                    value = a;
                    zwischenanzeige.Text = value + " " + opperatoren;
                    o = b.Text;
                    opperation_pressed = false;
                }
                else
                {
            
                    switch (o)
                    {
                        case "+":
                            Verarbeitung(value, addieren(value, a), b);
                            break;

N
Nexmo Themenstarter:in
36 Beiträge seit 2021
vor 2 Jahren

Ok, hab es hinbekommen.

mit einer If-else verzweigung direkt am anfang auf den Boolean-wert von opperation pressed.

4.942 Beiträge seit 2008
vor 2 Jahren

Auf welchen Modus beziehst du dich (Standard, Wissenschaftlich, Programmierer), denn ersterer verhält sich unterschiedlich zu den anderen?
Im Standardmodus wird sofort berechnet, in den anderen werden die Operatorprioritäten ("Punkt vor Strich") beachtet (dies ist aber komplizierter, s.a. meinen Parser für mathematische Formeln).

PS: Es heißt "Operation" und "Operator" (mit nur einem 'p' 😉.

N
Nexmo Themenstarter:in
36 Beiträge seit 2021
vor 2 Jahren

Hy,

es ist der Standard-Rechner.

Es ging nur darum, dass wenn ich einen Operator gedrückt habe und dann feststelle, dass es doch der falsche ist, dann den neuen drücken kann und er diesen übernimmt.
(sorry für Bandwurmsatz)