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
C# Anfänger, Problem bei variablenumwandlung
-
- Frage
-
Tensai -
5. März 2005 um 15:46
-
-
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.
-
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.
-
Wie heißen denn die Strings in den Comboboxen? Vielleicht hast du nur Punkte mit Kommas vertauscht, oder sonst falsch formatiert.
-
Hi nochmal!
Die Werte in den Comboboxen haben nen punkt wie z.B 500.0
und die strings sind männlich und weiblich -
Hallo Tensai!
Zitat von TensaiHi nochmal!
Die Werte in den Comboboxen haben nen punkt wie z.B 500.0
und die strings sind männlich und weiblichGewicht.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
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.
-
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 a9bejoentweder
oderzum ersten poster:
schreib mal bevor du die floats deklarierst folgendes
MessageBox.Show(Gewicht.Text);
und poste was er dir anzeigtnoch 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:
dann kann ich es hier locker auslesen:
-
-
Vielen Dank!!
Es geht jetzt!
Ich habe
Gewichtx = Convert.ToSingle(Gewicht.SelectedItem);
benutzt
MFG Tensai
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!