Thema Datum  Von Nutzer Rating
Antwort
Rot Probleme mit Taschenrechner
09.04.2012 21:40:32 Lizitas
Solved
15.05.2012 12:17:59 Lerando
NotSolved

Ansicht des Beitrags:
Von:
Lizitas
Datum:
09.04.2012 21:40:32
Views:
3836
Rating: Antwort:
 Nein
Thema:
Probleme mit Taschenrechner

Hallo!

Ich bringe mir C# bei und hab hier ein kleines Problem mit meinem Taschenrechner. Ich möchte mehr als nur 2 Zahlen berechnen können. Leider klappt das bisher nur mit +. Bei dem Rest kommt auch bei 2 Zahlen etwas Falsches raus (6-4=-10 oder 5*5=0). Ich finde leider meinen Fehler nicht.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Taschenrechner
{
    public partial class Form1 : Form
    {
        bool plus = false, minus = false, mal = false, geteilt = false, gleich=false; //Global; bool ist entweder "true" oder "false"

        public Form1()
        {
            InitializeComponent();
        }

        private void CheckifGleich() //Methodenstub=einfache Möglichkeit, beim Schreiben eines Methodenaufrufs eine neue Methodendeklaration von Visual Studio erstellen zu lassen. Visual Studio leitet die Deklaration vom Aufruf ab.Praktischer, da Änderungen gleich für alle Zahlen übernommen werden 
        {
            if (gleich == true)
            {
                textBox1.Text = "";
                textBox2.Text = "";
                gleich = false;
            }
        }

        double gespZahl1 = 0;//Die Zahl, die als erstes in die Textbox eingegeben wird,wird in dieser Variable gespeichert, um sie später mit weiteren Zahlen berechnen zu können (damit die Textbox die Zahl nicht "vergisst")
        double gespZahl2 = 0;//Notwendig,um das Ergebnis der Rechnung zu speichern

        private void button1_Click(object sender, EventArgs e)
        {
            CheckifGleich();//Überprüft,ob bereits etwas berechnet wurde und beginnt beim Klicken auf eine Zahl eine neue Berechnung
            textBox1.Text = textBox1.Text + "1";
        }


        private void button2_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "2";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "3";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "4";
        }

        private void button5_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "5";
        }

        private void button6_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "6";
        }

        private void button7_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "7";
        }

        private void button8_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "8";
        }

        private void button9_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "9";
        }

        private void button10_Click(object sender, EventArgs e)
        {
            CheckifGleich();
            textBox1.Text = textBox1.Text + "0";
        }

        private void button12_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Contains(","))//Prüfen, ob Textbox bereits einen Dezimalpunkt enthält
            {
                return;
            }
            else
            {
                textBox1.Text = textBox1.Text + ",";
            }

        }

        private void button11_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Contains("-"))
            {
                textBox1.Text = textBox1.Text.Remove(0, 1);// Wenn bereits ein Minus in der Textbox steht, wird das erste Zeichen in der Textbox beim Klicken des Buttons gelöscht,in dem Fall das Minus. So wird die Zahl wieder positiv.
            }
            else
            {
                textBox1.Text = "-" + textBox1.Text; //Das Minus wird vor die Zahl gesetzt
            }
        }

        private void button15_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                return;
            }
            else
            {
                plus = true;
                gespZahl1 = gespZahl1 + double.Parse(textBox1.Text);//Der Text in der Textbox wird zu double konvertiert und anschließend in gespZahl1 gespeichert. 
                textBox1.Clear();//Textbox wird geleert, um eine neue Zahl eingeben zu können

           }
        }
     
        private void button16_Click(object sender, EventArgs e)
            {
               if (textBox1.Text == "")
               {
                   return;
               }
              else
               {
                    minus = true;
                    gespZahl1 = gespZahl1 - double.Parse(textBox1.Text);
                    textBox1.Clear();

               }
            }

            private void button17_Click(object sender, EventArgs e)
            {
               if (textBox1.Text == "")
                {
                    return;
                }
                else
                {
                    mal = true;
                    gespZahl1 = gespZahl1 * double.Parse(textBox1.Text);
                    textBox1.Clear();
                    
                }
            }

            private void button18_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "")
                {
                    return;
                }
                else
                {
                    geteilt = true;
                    gespZahl1 = gespZahl1 / double.Parse(textBox1.Text);
                    textBox1.Clear();
                   
                }

            }

        private void button19_Click(object sender, EventArgs e)
        {
            gleich = true; //gleich=true sagt dem Programm,dass bereits etwas berechnet wurde

            if (plus)//Wenn plus=true,dann...
            {
                gespZahl2 = gespZahl1 + double.Parse(textBox1.Text);//Der Text aus der Textbox wird zu double konvertiert und zu dem hinzugefügt,was in gespZahl1 gespeichert ist. Wenn all das funktioniert hat,wird das Ergebnis in gespZahl2 gespeichert.
                textBox2.Text = gespZahl2.ToString();//ToString konvertieren,damit es in der Textbox angezeigt werden kann
                gespZahl1 = 0;//gespZahl1 wird auf 0 gesetzt,damit man mit einer neuen Berechnung beginnen kann
            }

            if (minus)//Wenn minus=true,dann...
            {
                gespZahl2 = gespZahl1 - double.Parse(textBox1.Text);
                textBox2.Text = gespZahl2.ToString();
                gespZahl1 = 0;
            }

            if (mal)//Wenn mal=true,dann...
            {
                gespZahl2 = gespZahl1 * double.Parse(textBox1.Text);
                textBox2.Text = gespZahl2.ToString();
                gespZahl1 = 0;
            }

            if (geteilt)//Wenn geteilt=true,dann...
            {
                gespZahl2 = gespZahl1 / double.Parse(textBox1.Text);
                textBox2.Text = gespZahl2.ToString();
                gespZahl1 = 0;
            }
        }

       

        private void button20_Click(object sender, EventArgs e)
        {
            plus = minus = mal = geteilt = false; 
            textBox1.Text= "";
            textBox2.Text = "";
            
        }
    }
}

Kann mir vielleicht jemand helfen?


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Probleme mit Taschenrechner
09.04.2012 21:40:32 Lizitas
Solved
15.05.2012 12:17:59 Lerando
NotSolved