Entwickler-Ecke

C# - Die Sprache - Taschenrechner in c# wirft exeption


user123 - Do 08.05.08 11:16
Titel: Taschenrechner in c# wirft exeption
Ich habe einen Taschenrechner geschrieben der über buttons gesteuert werden soll das problem ist das er an der stelle an der ich den wert ins textfeld schreiben will ein exeption bekomme weil ich keine bedingung geschrieben hab in der geprüft wird ob schon etwas in wert1 ist....



das problem ist ich weiss nicht wie ich das anstellen sol - kann mir einer helfen?

hier der code:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
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 WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int zwischenergebnis = 0;
        
        public void add(int zahl1, int zahl2)
        {
            zwischenergebnis = zahl1 + zahl2;
            
            label1.Text = zwischenergebnis.ToString();

        }

        private void button1_Click(object sender, EventArgs e)
        {

                if (wert1 != null)
            {
                string wert1 = textBox1.Text;

                string wert2 = textBox2.Text;

                int Wert1 = int.Parse(wert1);

                int Wert2 = int.Parse(wert2);


                add(Wert1, Wert2);
            }                    

        }
    }
}


Moderiert von user profile iconUGrohne: C#-Tags hinzugefügt und unnötige Zeilenumbrüche entfernt.


bakachan - Do 08.05.08 12:07

Überprüf doch ob der string in der TextBox leer ist (string.IsNullOrEmpty).
Und was auch wichtig ist: TryParse anstelle von Parse damit du überprüfen kannst ob überhaupt ein String in der TextBox steht den du in eine Integer variable umwandeln kannst.


JüTho - Do 08.05.08 12:08

user profile iconuser123 hat folgendes geschrieben:
Idas problem ist das er an der stelle an der ich den wert ins textfeld schreiben will ein exeption bekomme weil ich keine bedingung geschrieben hab in der geprüft wird ob schon etwas in wert1 ist.

Wenn Du die Fehlermeldung genau aufschreiben würdest und den Befehl genau angegeben hättest, wäre schneller klar, was eigentlich falsch ist. Wenn Du mit diesen Hinweisen in der SDK-Doku nachlesen würdest, könntest Du auch selbst auf den Fehler und damit auf die Lösung kommen.

Es darf doch keine Exception geben, wenn schon etwas in wert1 steht; eine Addition soll doch mehr als einmal ausgeführt werden dürfen. Ich sehe als Fehler nur, dass an der Stelle "if (wert1 != null)" die Variable wert1 noch nicht deklariert ist. Aber das gibt eine Fehlermeldung des Compilers, keine Exception zur Laufzeit.

Außerdem ist int.Parse riskant: Was passiert denn, wenn in textBox1 keine Zahl steht (z.B. nichts)? Dann knallt es wirklich; dafür ist TryParse vorgesehen:

C#-Quelltext
1:
2:
3:
4:
int Wert1;
int Wert2;
if (int.TryParse(textBox1.Text, out Wert1) && int.TryParse(textBox2.Text, out Wert2))
    add(Wert1, Wert2);

Also bitte Fehler genauer angeben und untersuchen!

Gruß Jürgen

Nanu: da habe ich extra nachgeschaut, ob es inzwischen eine andere Antwort gab, nichts da, absenden - und dann war ich doch nicht allein.