Taschnrechner

  • Moin,



    ich bin noch relativ neu in Sachen C# und hätte jetzt eine Frage.
    Ich versuch nen Taschenrechner mit Windows Forms zu machen.


    Vorgehen wollte ich so:


    Beim Drücken von "1" eine 1 in die Textbox schreiben, sowie die Rechenzeichen auch.
    Der Inhalt der Textbox ist ja ein String und ich zerteile den String in seine Bestandteile.
    Soweit so gut.


    Dann jedes zeichen in ein Array schreiben. Nun hab ich aber folgendes Problem, dass man einen String bzw. Char doch nicht in int konvertieren kann damit ich damit auch rechnen kann.

    Geht das irgendwie oder geh ich das ganze falsch an?
    Am Anfang will ich auch nur Addition,Division,Multiplikation und Subtraktion einbauen.
    Im Moment häng ich wie gesagt an meiner Klasse zum teilen des Strings(erledigt) und zum Konvertieren in eine "wirkliche Zahl".



    MfG

  • Du kannst einen String entweder mit Convert.ToInt32(string s) in ein int konvertieren, oder auch mit Int32.TryParse(string s, out int result).
    Bei der zweiten Möglichkeit wird nur false zurück gegeben, anstatt einer Exception, wenn der String das falsche Format hat.
    [quelle]http://msdn.microsoft.com/de-d…ert.toint32(v=vs.80).aspx
    http://msdn.microsoft.com/de-de/library/f02979c7.aspx[/quelle]

  • Danke klappt.
    Ich schreib wieder wenn ich hilfe brauch.


    //Edit


    Was haltet ihr hier von? Verbesserungsvorschläge? Unsauber gecodet? Bin wie gesagt in den Anfängen ^^


    Klasse Rechnen:



    Der Rechen Button:



    Es wird im Format wie z.B: 5 x 5 in die Textbox geschrieben. Ich muss das wohl nochmal bearbeiten ^^ Mir ist jetzt erst aufgefallen das ich nur mit einstelligen Zahlen rechnen kann.

  • Sieht doch ganz gut aus ;)
    Um die Übersicht zu behalten , solltes du noch die Buttons, Textboxen usw. unbennen.
    Zum Beispiel statt: button1 ... AusrechenBtn

  • Die Initialisierung der Variablen split in Zeile 9 der Rechnen Klasse brauchst du nicht, bzw. du kannst ihr direkt sStringsplit.Split(' ') zuweisen.
    Und es sieht so aus, dass du den Divisor durch den Dividenden teilst, und dass es bei der Subtraktion auch falsch herum ist. iNum0 sollte denke ich split[1] und iNum1 split[3] zugewiesen werden damit es passt.
    Ansonsten sieht es ganz gut aus.


  • Geht ist aber nicht unbedingt die beste Variante :)

  • Ich hab hier noch en altes C# Buch rumfliegen ( hab 1 jahr lang IT Fachabi gemacht, hab es dann aber wieder sein lassen :D:D )
    Brauch es wer ? :D


    Was heißt alt, ist ausm Jahr 2010

  • keiner Tipp: Du hast jetzt bestimmt 10 buttonX_klick, für deine 10 tasten.
    du kannst eine Funktion auch als Handler für mehrere events benutzen, wenn dus schaffst, dass du dann noch rausfindest wie du unterscheidst, was du machen sollst.
    in dem fall bekommst du bei einem click-event ein "object sender". der lässt sich zu einem Button casten. ... und deine Buttons enthallten nicht mehr als die jeweiligen Zahlen, als text, oder?


    also kannst du diese funktion auf jedem button benutzen:

    Code
    1. private void numButton_Click(object sender, EventArgs e)
    2. {
    3. Button butt = (Button)sender;
    4. textBox1.Text += butt.Text;
    5. }


    um jeden Button diese Funktion zu geben, gest du im Properties-Fenster (da wo du auch den Text vom Button eingestellt hat) in den Events bereich (der Blitz)

    und wählst den Funktionsnamen aus

  • Weil ich gerade nichts besseres zu tun habe: Es sind Methoden :P


    oh mein gott - man kanns aber auch genau nehmen :)
    nach dem in c#, wie in Java bzw. im gegensatz zu C++, so ein ding nicht ohne klasse existieren kann, ist diese Namensunterscheidung relativ fürn Hugo... auch wenn du recht hast..