Taschenrechner in Windows Forms (C#): Wie kann ich das Komma gescheit einbauen?
Im Moment programmiere ich einen Taschenrechner, der fast genauso sein soll wie der Standardrechner von Windows. Bis jetzt lief es ganz gut, nur kriege ich es einfach nicht hin, dass man eine eigene Dezimalzahl eingeben kann.
Bei mir sieht es gerade so aus:
private double Zahl; private char Operator; private double Operator2; private double Zahl2; double result; private bool button2WasClicked = false; private bool button20WasClicked = false;
So sieht der Code in der Zahl aus:
private void button15_Click(object sender, EventArgs e) { if (button2WasClicked == false) { Zahl = Zahl * 10 + 8; Anzeige(); } if (button2WasClicked == true) { Zahl = Zahl /10 + 0.8; Anzeige(); button2WasClicked = false; } //------------------------------------- private void button2_Click_1(object sender, EventArgs e) { button2WasClicked = true; }
Das ist der "," Knopf.
Also: Wie man sieht, klappt es ganz gut, eine Dezimalstelle einzugeben. Bei einer Zahl unter 10 aber habe ich einfach keinen Plan, wie ich es mit +10 anstellen sollte.
Bitte helft mir.
3 Antworten
Sorry aber das ist wirklich ein schrecklicher Code...
Nachdem ich überhaupt nicht verstehe was du in deinem Code probierst versuche ich es einfach mal so: Wo ist das Problem, das man einfach mithilfe des ","-Buttons einen Punkt in den Zahlenwert einfügt und diesen der Funktion als float oder double übergibt?
Liebe Grüße, JutenMorgen!
Wenn der Nutzer Werte eingibt, dann sind diese doch noch im String-Format. Diesen String kannst du bearbeiten, z.B. neue Zahlen anhängen.
private TextBox Display;
public void AddComma(object sender, EventArgs e)
{
if (display.Text.IndexOf(".", StringComparison.CurrentCultureIgnoreCase)
== -1)
{
Display.Text += ".";
}
}
public void NumberClicked(object sender, EventArgs e)
{
Display.Text += (sender as Button).Text;
}
Für die Rechnung selbst reicht es dann, die jeweiligen Strings zu parsen, die in der Rechnung verwendet werden sollen.
https://msdn.microsoft.com/de-de/library/fd84bdyt(v=vs.110).aspx
1.) Variablennamen beginnen bitte mit Kleinbuchstaben.
2.) Buttons bitte etwas besser benennen.
3.) Was soll das "Zahl = Zahl / 10 +0.8" zB bitte sein?
4.) Den gesamten Code posten auf pastebin.
teil 2
}
private void button9_Click(object sender, EventArgs e)
{
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 4;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.4;
Anzeige();
button2WasClicked = false;
}
}
private void button10_Click(object sender, EventArgs e)
{
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 5;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.5;
Anzeige();
button2WasClicked = false;
}
}
private void button17_Click(object sender, EventArgs e)
{
}
private void button18_Click(object sender, EventArgs e)
{
textBox1.Clear();
Zahl = 0;
Zahl2 = 0;
button2WasClicked = false;
button20WasClicked = false;
}
private void button19_Click(object sender, EventArgs e)
{
}
private void button8_Click(object sender, EventArgs e)
{
Operator = '-'; //MINUSTASTE
Zahl2 = Zahl;
Zahl = 0;
}
private void button3_Click(object sender, EventArgs e)
{
Operator = '+'; //PLUSTASTE
Zahl2 = Zahl;
Zahl = 0;
}
private void button4_Click(object sender, EventArgs e)
{
if (Operator == '+')
{
result = Zahl2 + Zahl;
Anzeige2();
Zahl = result;
Zahl2 = result;
}
if (Operator == '-')
{
result = Zahl2 - Zahl;
Anzeige2();
Zahl = result;
Zahl2 = result;
}
if (Operator == '*')
{
result = Zahl2 * Zahl;
Anzeige2();
Zahl = result;
Zahl2 = result;
}
if (Operator == '/')
{
result = Zahl2 / Zahl;
Anzeige2();
}
if (Operator == '%')
{
}
if (Operator2 == Math.Sqrt(Zahl))
{
result = Math.Sqrt(Zahl);
textBox1.Text = result.ToString();
Zahl2 = Zahl;
}
}
private void button16_Click(object sender, EventArgs e)
{
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 7;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.7;
Anzeige();
button2WasClicked = false;
}
}
private void button14_Click(object sender, EventArgs e)
{
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 9;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.9;
Anzeige();
button2WasClicked = false;
}
}
private void button12_Click(object sender, EventArgs e)
{
Operator = '*'; //MALTASTE
Zahl2 = Zahl;
Zahl = 0;
}
private void button13_Click(object sender, EventArgs e)
{
Operator = '/'; //GETEILTDURCHTASTE
Zahl2 = Zahl;
Zahl = 0;
}
private void button27_Click(object sender, EventArgs e)
{
textBox1.Text = textBox1.Text + "√";
Operator2 = Math.Sqrt(Zahl); //WURZELTASTE
}
private void button2_Click_1(object sender, EventArgs e)
{
button2WasClicked = true;
}
private void button26_Click(object sender, EventArgs e)
{
}
}
}
Jetzt mal ganz ehrlich: Hast du auch nur einmal nachgedacht, bevor du diese Kommentare hier gepostet hast? Was soll das, wieso klatscht du mitunter völlig irrelevanten Code unformatiert hier hinein und erwartest dazu noch Hilfe? Wer soll das bitteschön lesen?
Formatiere deinen Code, halte dich an die Konventionen, wie dir bereits geschrieben wurde und gebe den Methoden passende Namen.
1,why immer variabelnnamen klein?
2,ja gut das könnt ich echt mal machen:D
3,Zahl=0 mal 10 + 8 (wenn ich nochmal auf 8 drücke würded dann 88 kommen anstatt 16
1.) Keine Ahnung wer sich das ursprünglich ausgedacht hat aber das hat sich so als guter Codestil etabliert.
2.) Gut.
3.) Und was ist das mit den "0.8"? Bastelst du dir alles durch sowas zusammen?
Teil 1
private void Anzeige()
{
textBox1.Text = Zahl.ToString();
}
private void Anzeige2()
{
textBox1.Text = result.ToString();
}
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Zahl = Zahl * 10 + 0;
Anzeige();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void button24_Click(object sender, EventArgs e)
{
}
private void button20_Click(object sender, EventArgs e)
{
button20WasClicked = true;
}
private void button15_Click(object sender, EventArgs e)
{
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 8;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.8;
Anzeige();
button2WasClicked = false;
}
}
private void button11_Click(object sender, EventArgs e)
{
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 6;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.6;
Anzeige();
button2WasClicked = false;
}
}
private void button7_Click(object sender, EventArgs e)
{
if (button20WasClicked == true)
{
Zahl = Zahl2;
Zahl = Zahl - 1;
Anzeige();
button20WasClicked = false;
}
else
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 1;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl / 10 + 0.1;
Anzeige();
button2WasClicked = false;
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button5_Click(object sender, EventArgs e)
{
if (button20WasClicked == true)
{
Zahl = Zahl2;
Zahl = Zahl - 2;
Anzeige();
button20WasClicked = false;
}
else
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 2;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.2;
Anzeige();
button2WasClicked = false;
}
}
private void button6_Click(object sender, EventArgs e)
{
if (button20WasClicked == true)
{
Zahl = Zahl2;
Zahl = Zahl *10 - 3;
Anzeige();
button20WasClicked = false;
}
else
if (button2WasClicked == false)
{
Zahl = Zahl * 10 + 3;
Anzeige();
}
if (button2WasClicked == true)
{
Zahl = Zahl /10 + 0.3;
Anzeige();
button2WasClicked = false;
}