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?
|