Autor Beitrag
Muetze187
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 16.09.10 08:34 
Hallo mal wieder :)

Ich habe einen Taschenrechner erstellt und mit einer Ausnahme versehen, die Konvertierungsfehler abfängt.
Mein Problem hierbei ist, dass das Programm weiterrechnet wenn der Anwender auf Berechnen klickt.
Dies soll aber unterbunden werden. Ist es irgendwie möglich, dass das Programm sich neu startet oder so was ähnliches? Also
dass das Programm die Werte einfach "vergisst"?

Hier mal der Code:

ausblenden volle Höhe 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:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
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 Taschenrechner
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private Single Ausnahme(TextBox wert2)
        {
            float wert1 = 0;
            try
            {
               wert1 = Convert.ToSingle(wert2.Text);
               
            }
            catch (FormatException)
            {
                MessageBox.Show("Es ist ein Konvertierungsfehler aufgetreten!\n\n Fehler: " + wert2.Text, "FEHLER!");
                wert2.Select();
               
            }
            return wert1;

          
            
            
        }
        private void buttonBeenden_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void buttonBerechnen_Click(object sender, EventArgs e)
        {
            float zahl1, zahl2, ergebnis = 0;
            bool divDurchNull = false;
            //die beiden Zahlen einlesen und konvertieren
         
                zahl1 = Ausnahme(textBoxZahl1);
                zahl2 = Ausnahme(textBoxZahl2);
                //die Rechenoperation ermitteln und ausführen
                if (radioButtonAddition.Checked == true)
                    ergebnis = zahl1 + zahl2;
                if (radioButtonSubtraktion.Checked == true)
                    ergebnis = zahl1 - zahl2;
                if (radioButtonMultiplikation.Checked == true)
                    ergebnis = zahl1 * zahl2;
                if (radioButtonDivision.Checked == true)
                {
                    //wird eine Division durch Null versucht?
                    if (zahl2 == 0)
                        divDurchNull = true;
                    else
                        ergebnis = zahl1 / zahl2;
                }
                //wurde durch Null dividiert?
                if (divDurchNull == true)
                    labelAnzeige.Text = "Nicht definiert!";
                else
                    labelAnzeige.Text = Convert.ToString(ergebnis);
            }
          
        }
    }


Danke im Voraus!

mfg
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 16.09.10 08:43 
Du könntest die Exception an einer Stelle abfangen wo du die Berrechnung abbrechen kannst.

Aber prinzipiell brauchst du für sowas keine Exception.
Beispiel:
ausblenden C#-Quelltext
1:
2:
3:
int result;
if(!int.TryParse(textBox1.Text, out result))
  MessageBox.Show("Fehler");
Muetze187 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Do 16.09.10 09:06 
Danke für die Antwort.
Ich muss ne Exception machen an der Stelle. Ist vom "Lehrer" vorgegeben. :)
Er meinte als Tipp, ich könnte in der Methode für die Überprüfung eine eigene Ausnhame auslösen und sie in der Methode mit den Berechnungen auswerten.
Die Frage ist nur wie?! Außerdem sollte ich das Gaze mit try...catch machen, da dies gerade das Thema ist :)



mfg
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 16.09.10 09:15 
user profile iconMuetze187 hat folgendes geschrieben Zum zitierten Posting springen:
Er meinte als Tipp, ich könnte in der Methode für die Überprüfung eine eigene Ausnhame auslösen und sie in der Methode mit den Berechnungen auswerten.


user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Du könntest die Exception an einer Stelle abfangen wo du die Berrechnung abbrechen kannst.


Somit haben wir dir beide den gleichen Hinweis gegeben.

Und deine Frage "wie" hast du dir schon selbst beantwortet -> Try Catch
Die entsprechende Stelle wurde ja auch schon genannt.

Alles andere wäre direkt di Lösung zu verraten und das ist glaube ich nicht der Sinn deines "Unterrichts".