Die Eingabezeichenfolge hat das falsche Format fehlermeldung

  • C#
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Dksksm.

    Die Eingabezeichenfolge hat das falsche Format fehlermeldung

    Bevor wieder etwas kommt ja ich habe gegoogelt und keine passende Antwort gefunden sonst wäre ich nicht hier. ;)
    Folgendes Problem. Ich Programmiere einen Taschenrechner und habe die funktion Wurzelberechnen folgendermaßen eingebaut.

    C#-Quellcode

    1. private void wurzel_Click(object sender, EventArgs e)
    2. {
    3. double zahl = Convert.ToDouble(textBoxergebnis.Text);
    4. double ergebnis = Math.Sqrt(zahl);
    5. textBoxergebnis.Text = Convert.ToString(ergebnis);
    6. }
    Heißt wenn ich eine Zahl eingebe und anschließend auf den Wurzel Button klicke gibt mir die Textbox die richtige Zahl herraus.
    Wenn ich jedoch erst die Wurzel drücke komt sofort beenden des Taschenrechners und die meldung: Die Eingabezeichenfolge hat das falsche Format. Hinter dieser Zeile.

    C#-Quellcode

    1. double zahl = Convert.ToDouble(textBoxergebnis.Text);
    Wie kann ich das lösen also das zumbeispiel einfach die eingabe erst von der Zahl und dann der wurzel erzwungen wird oder das sonst eine meldung kommt.
    @Moritzgs1 Es sieht so aus, als wolltest Du einen String mit dem Inhalt "Roulade mit Klößen" nach Double konvertieren wollen.
    Setz einen Haltepunkt auf Zeile #4 und kläre auf, was Du konvertieren willst.
    Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    funktioniert vielen dank :thumbup: Fertiger Code den ich jetzt für die Wurzel habe ist:
    private void wurzel_Click(object sender, EventArgs e)

    C#-Quellcode

    1. {
    2. if (Double.TryParse(textBoxergebnis.Text, out double result))
    3. { double ergebnis = Math.Sqrt(result);
    4. textBoxergebnis.Text = Convert.ToString(ergebnis);
    5. }
    6. }
    Nur um es nochmal zu verdeutlichen, für jegliche Konvertierung von Strings in Zahlen sollte man immer die .Parse() bzw. die .TryParse() Funktionen des gewünschten Datentyps verwenden. Abgesehen, davon dass gerade .TryParse einfach super praktisch ist, kann bei .ConvertToDouble(), etc. manchmal komische Sachen bei herauskommen.

    Außerdem verfügt absolut jede Klasse über eine .ToString() Methode. Diese ist, gerade bei Zahlen, ebenfalls Convert.ToString vorzuziehen.

    Moritzgs1 schrieb:

    lande ich bei der code zeile.
    Das war der Plan.
    Nun schau Dir den Inhalt von textBoxergebnis.Text an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    EaranMaleasi schrieb:


    Außerdem verfügt absolut jede Klasse über eine .ToString() Methode. Diese ist, gerade bei Zahlen, ebenfalls Convert.ToString vorzuziehen.


    Ooops, da war ich zu luschig. Stimmt natürlich.

    C#-Quellcode

    1. if (Double.TryParse(textBoxergebnis.Text, out double result))
    2. {
    3. double ergebnis = Math.Sqrt(result);
    4. textBoxergebnis.Text = ergebnis.ToString();
    5. }