C# Zahlen quadrieren
Tach Experten,
Hät eine Frage bezüglich meines Taschenrechner in C#. Mein geschriebener Code funktioniert nicht und ich finde den Fehler nicht ( schreibt mir das 'Ergebnis' im Kontext nicht vorhanden ist ).
Würd mich freuen, wenn mir jemand bei meinem Problem helfen könnte.
if (HY.Checked)
{
double Zahl1 = double.Parse(Xzahl.Text);
int Zahl2 = int.Parse(Yzahl.Text);
double Ergebnis;
if (Zahl2 == 0)
{
lbl.Text = "Das Ergebniss ist : 1";
}
else
{
for (int i = 1; i < Zahl2; i++ )
{
Ergebnis = Ergebnis * Zahl1;
}
lbl.Text = "Das ergebnis ist : " + Ergebnis.ToString();
}
3 Antworten
Musst du nicht vorher "Ergebnis=1" machen?
wenn mich nicht täusche ist das selbe wie Convert.ToDouble oder Covert.ToInt
Die .Parse Methoden können Exceptions werfen, und die sollten auf jedenfall abgefangen werden. Vor allem, wenn man eine Benutzereingabe versucht damit zu konvertieren.
Besser ists gleich .Tryparse(string, out int) zu nehmen, da bekommt man einen Booleschen Rückgabewert, der angiebt obs geklappt hat oder nicht.
Dies ist der gesamte, hatte
double Zahl1 = double.Parse(Xzahl.Text);
double Zahl2 = double.Parse(Yzahl.Text);
double Ergebnis;
vorhin vor dem if aber als die Quadrierung dazu kam musste wegen int ...
private void cmd_Click(object sender, EventArgs e) {
if (AD.Checked)
{
double Zahl1 = double.Parse(Xzahl.Text);
double Zahl2 = double.Parse(Yzahl.Text);
double Ergebnis;
Ergebnis = Zahl1 + Zahl2;
lbl.Text = "Die Summe ist :" + Ergebnis.ToString ();
}
if (SB.Checked)
{
double Zahl1 = double.Parse(Xzahl.Text);
double Zahl2 = double.Parse(Yzahl.Text);
double Ergebnis;
Ergebnis = Zahl1 - Zahl2;
lbl.Text = "Die Differenz ist :" + Ergebnis.ToString ();
}
if (MP.Checked)
{
double Zahl1 = double.Parse(Xzahl.Text);
double Zahl2 = double.Parse(Yzahl.Text);
double Ergebnis;
Ergebnis = Zahl1 * Zahl2;
lbl.Text = "Das Produkt ist :" + Ergebnis.ToString();
}
if (DV.Checked)
{
double Zahl1 = double.Parse(Xzahl.Text);
double Zahl2 = double.Parse(Yzahl.Text);
double Ergebnis;
Ergebnis = Zahl1 / Zahl2;
lbl.Text = "Der Quotienten ist :" + Ergebnis.ToString();
}
if (HY.Checked)
{
double Zahl1 = double.Parse(Xzahl.Text);
int Zahl2 = int.Parse(Yzahl.Text);
double Ergebnis;
if (Zahl2 == 0)
{
lbl.Text = "Das Ergebniss ist : 1";
}
else
{
for (int i = 1; i < Zahl2; i++ )
{
Ergebnis = Ergebnis * Zahl1;
}
lbl.Text = "Das ergebnis ist : " + Ergebnis.ToString();
}
Auf die Gefahr hin, dass variablen mit nativen Datenytypen in C# null sein können würde ich sagen, Ergebnis ist null. was mit der fehlermeldung nicht übereinstimmt. Ist das dein Gesamter Code? In welcher Zeile tritt der Fehler auf? Der Fehler sagt ja, das Ergebnis nicht definiert ist. Ist es aber. Und so muss auch in den zwei ifs drauf zugegriffen werden können. Wird Ergbnis noch woanders benutzt?
Ist die Anweisung "Parse" in C# sicher? In Java ist das eine gefährliche Exception-Quelle.