1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C# Anfänger, Problem bei variablenumwandlung

    • Frage
  • Tensai
  • 5. März 2005 um 15:46
  • Unerledigt
  • Tensai
    2
    Tensai
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 5. März 2005 um 15:46
    • #1

    Hi! Ich bin neu hier und Anfänger, wir programmieren in der Schule mit C# und müssen eine Aufgabe machen. Jetzt hab ich ein Problem bei der Umwandlung von einer float variable die das Programm aus einer combobox lesen soll.
    Die folgende Zeile wird grün unterlegt und es erscheint die unten stehende Fehlermeldung.

    C#-Code:
    private void BerechnePromille()
    {
    float Mengex,AlkWert,Gewichtx;
    string Geschlechtx;

    Geschlechtx = Geschlecht.Text;
    Gewichtx = Convert.ToSingle(Gewicht.Text);
    Mengex = Convert.ToSingle(Menge.Text);

    if (Geschlechtx == "männlich")
    {
    AlkWert = (((Mengex * 0.48F)*0.8F)/(Gewichtx * 0.7F));
    }
    else
    {
    AlkWert = (((Mengex * 0.048F)*0.8F)/(Gewichtx *0.6F));
    }

    Ausgabe.Text = AlkWert.ToString("0.00");
    }

    Fehlermeldung: be zeile :Gewichtx = Convert.ToSingle(Gewicht.Text);


    Eine nicht behandelte Ausnahme des Typs 'System.FormatException' ist in mscorlib.dll aufgetreten.
    Zusätzliche Informationen: Die Eingabezeichenfolge hat das falsche Format.

    MFG Tensai

  • sauzachn
    17
    sauzachn
    Mitglied
    Reaktionen
    51
    Punkte
    3.101
    Beiträge
    606
    • 5. März 2005 um 16:14
    • #2

    Du solltest natürlich schon irgendwo abfragen, ob das übergebene Gewicht überhaupt in einen Float-Wert konvertiert werden _kann_. Wenn dir irgendjemand "bla" eingibt, ist das klar, daß das kein Float ist.

    Dipper dipper dii dipper dii dipper dii duuu

  • Tensai
    2
    Tensai
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 5. März 2005 um 18:30
    • #3

    Villeicht hätte ich bei schreiben sollen das es dich bei den Werten die man eingibt um ComboBoxen handelt. Also sind es auf jeden fall float werte.

  • J.Petso
    15
    J.Petso
    Mitglied
    Reaktionen
    14
    Punkte
    2.384
    Beiträge
    457
    • 5. März 2005 um 18:36
    • #4

    Wie heißen denn die Strings in den Comboboxen? Vielleicht hast du nur Punkte mit Kommas vertauscht, oder sonst falsch formatiert.

    "Egbert B. Gebstadter is the Egbert B. Gebstadter of indirect self-reference." - Egbert B. Gebstadter

  • Tensai
    2
    Tensai
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 5. März 2005 um 19:09
    • #5

    Hi nochmal!

    Die Werte in den Comboboxen haben nen punkt wie z.B 500.0
    und die strings sind männlich und weiblich

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 5. März 2005 um 22:28
    • #6

    Hallo Tensai!

    Zitat von Tensai

    Hi nochmal!

    Die Werte in den Comboboxen haben nen punkt wie z.B 500.0
    und die strings sind männlich und weiblich

    Gewicht.Text liefert dir hier nur den text, der zu der combobox gehört (das ist wahrscheinlich nichts brauchbares). Was du haben möchstest ist der string, den du (wahrscheinlich) als item in der combobox abgelegt hast.

    Versuche mal

    Code
    Gewichtx  = Convert.ToSingle((string) Gewicht.SelectedItem);

    Ich hoffe ich liege damit richtig. Wenn nicht, poste doch bitte den code, in dem du deine comboboxen mit werten füllst.

    lass dir bei solchen problemen immer zuerst alle werte ausgeben, und schränke so die fehlerquelle ein. Wenn dir z.b eine exception sagt, dass einstring nicht in ein float konvertiert werden kann, dann ist der erste logische schritt, sich diesen string einmal anzusehen (zum beispiel irgendwo ausgeben lassen).


    und zum schluss noch ein notwendiger hinweis auf unser FAQ.

    lg, Benjamin Ferrari, bookworm.at

  • bosie
    13
    bosie
    Mitglied
    Reaktionen
    7
    Punkte
    1.767
    Beiträge
    325
    • 6. März 2005 um 03:24
    • #7
    Zitat von a9bejo

    Gewicht.Text liefert dir hier nur den text, der zu der combobox gehört (das ist wahrscheinlich nichts brauchbares). Was du haben möchstest ist der string, den du (wahrscheinlich) als item in der combobox abgelegt hast.

    falsch, Gewicht.Text liefert den Text zurück der gerade in der combo angezeigt wird.

    Zitat von a9bejo
    Code
    Gewichtx  = Convert.ToSingle((string) Gewicht.SelectedItem);

    entweder

    Code
    Gewichtx  = Convert.ToSingle(Gewicht.SelectedItem.ToString());


    oder

    Code
    Gewichtx  = Convert.ToSingle(Gewicht.SelectedItem);

    zum ersten poster:
    schreib mal bevor du die floats deklarierst folgendes
    MessageBox.Show(Gewicht.Text);
    und poste was er dir anzeigt

    noch was:
    AlkWert = (((Mengex * 0.48F)*0.8F)/(Gewichtx * 0.7F));

    (((Mengex * 0.48F)*0.8F)/(Gewichtx * 0.7F)) diesen teil könntest in ne eigene funktion ausgliedern, dann könntest dir das if/else sparen

    AlkWert = Geschlechtx.Equals("männlich") ? GetAlkWert(Mengex,Gewichtx,0.7F) : GetAlkWert(Mengex,Gewichtx,0.8F);

    etc

    edit: habs mal kurz probiert:

    Code
    this.comboBox1.Items.AddRange(new object[] {
    														   "0.9",
    														   "0.8",
    														   "0.7",
    														   "500.0"});

    dann kann ich es hier locker auslesen:

    Code
    float f = Convert.ToSingle(this.comboBox1.SelectedItem);
  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 6. März 2005 um 10:56
    • #8
    Zitat von bosie

    falsch, Gewicht.Text liefert den Text zurück der gerade in der combo angezeigt wird.


    hmm du hast völlig recht. danke für die korrektur.

    lg, Benjamin Ferrari, bookworm.at

  • Tensai
    2
    Tensai
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 6. März 2005 um 15:36
    • #9

    Vielen Dank!!
    Es geht jetzt!
    Ich habe


    Gewichtx = Convert.ToSingle(Gewicht.SelectedItem);
    benutzt
    MFG Tensai

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern