Frage zu C# (Taschenrechner)?

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();
        }
    }

Woher ich das weiß:eigene Erfahrung

xBlackMass 
Fragesteller
 27.11.2018, 13:21

zahl = zahl * 10 + 1; 

1

In dem du es der Textbox anhängst und sie nicht immer überschreibst:

ausgabe.Text += zahl.ToString();

Marlie86  27.11.2018, 12:45

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.

1
Gaterde  27.11.2018, 12:53
@Marlie86

Der Code ist eh sehr unschön. Ich vermute mal, er möchte dann 9 Buttons für alle Zahlen erstellen und auf jedem Button Click Event die "Zahl" Variable anpassen und dann "anzeigen()" aufrufen. Funktioniert, ist aber nicht so toll ;)

0
Marlie86  27.11.2018, 13:10
@Gaterde

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.

1

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"

Woher ich das weiß:eigene Erfahrung

xBlackMass 
Fragesteller
 27.11.2018, 12:32

MUss ich das dann in ner while schleife verpacken oder wie?

0
Marlie86  27.11.2018, 12:35
@xBlackMass

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 +=)

1
Isendrak  27.11.2018, 13:01
@xBlackMass

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();
0