Frage zu C# (Taschenrechner)?
Also wenn ich auf die den button 1 einmal klicke, dann soll in der Textbox die 1 ausgegeben werden, aber wie mache ich dass wenn ich z.b. 2 oder 3 mal auf die 1 klicke damit dann 11 oder 111ausgegeben wird?
Danke
3 Antworten
Na das war in deiner Frage nicht gefragt ^^
Wenn es double sein muss wird die Lösung ein wenig komplexer, zumindest in meiner Schnellschusslösung, so wird noch mit double gearbeitet du kannst aber auch noch mit zahl Rechnen ohne diese erstmal wieder nach double oder so zu konvertieren.
Vielleicht weiß noch jemand eine schönere Lösung, würde mich freuen ^^
public partial class Form1 : Form
{
private double zahl;
private double toAdd = 1;
public Form1()
{
InitializeComponent();
}
private void ausgabe()
{
label1.Text = zahl.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
zahl += toAdd;
toAdd *= 10;
ausgabe();
}
}
In dem du es der Textbox anhängst und sie nicht immer überschreibst:
ausgabe.Text += zahl.ToString();
Ja stimmt schon die Variante mit zahl += "1" war wirklich nicht schön gedacht von mir. Je nachdem was wirklich das Ziel ist wäre aber meine etwas längere Variante (der Post mit Sourcecode) durchaus sehr einfach auf die erweiterte Aufgabe mit den Verschiedenen Zahlen anpassbar.
Ist eben auch eine Frage was das Endergebnis sein soll soll mit Zahl noch gerechnet werden können und diese also auch durch den Buttonclick verändert werden oder geht es nur um das anhängen er Zahlen an die Textbox.
Probier es mal mit zahl als String und dann in deinem Eventhander:
zahl += "1";
Jedenfalls sind Numerische Datentypen für dein Problem eher ungeeignet denn
1+ 1+ 1 = 3
jedoch "1" + "1" + "1" = "111"
MUss ich das dann in ner while schleife verpacken oder wie?
Ne eine schleife ist nicht nötig.
Du speicherst ja den aktuellen Wert im String Member zahl, und hängst durch das += einfach nur weitere Strings an den zahl String an.
Da du ja dann auch mit Strings arbeitest kannst du dir aber bei der Ausgabe .ToString() sparen.
(Alternativ sollte ich einen Denkfehler haben müsste es in der Stringklasse auch eine Append Methode geben, also Ersatz für das +=)
Ganz einfach:
string zahl1AlsString = "123";
string zahl2AlsString = "456";
int zahl1AlsInt = int.Parse(zahl1AlsString);
int zahl2AlsInt = int.Parse(zahl2AlsString);
int zahl3AlsInt = zahl1AlsInt + zahl2AlsInt;
string zahl3AlsString = zahl3AlsInt.ToString();
Stimmt auch ne schöne Möglichkeit :-) gar nicht dran gedacht, allerdings hat hier halt zahl immer den Wert 1. .... also ist die Wahl nun diese Möglichkeit oder mein zweiter Vorschlag je nach Zweck der Übung.