Laden...

Taschenrechner: Leeres Feld als Null ansehen

Erstellt von P584 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.722 Views
P
P584 Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren
Taschenrechner: Leeres Feld als Null ansehen

Hi Leute,

ihr ahnt es bestimmt schon: Ich bin blutiger Anfänger und habe eine Frage:

Ich mach sowas ähnliches wie ein Taschenrechner, unter anderem werden an einer Stelle mehrere Zahlen addiert. Wenn ich nicht alle zur Verfügung gestellten Felder (man kann höchstens 15 Zahlen addieren) ausfülle bricht das Programm ab.

Wie kann ich einstellen, dass das Programm ein nicht ausgefülltes Feld als Null ansieht?

Habe das so gemacht:

 Double ergebnis = 0;

            ergebnis = Convert.ToDouble(tb_sp_1.Text) + Convert.ToDouble(tb_sp_2.Text) + Convert.ToDouble(tb_sp_3.Text);

...das Ganze geht halt bis tb_sp_15

Gruß Paul

K
85 Beiträge seit 2008
vor 14 Jahren

Prüf doch mit einer If-Anweisung ob die Textbox nicht leer ist:


double Ergebnis = 0;

if (txbZahl1.Text != null)
{
     Ergebnis += Convert.ToDouble(txbZahl1.Text);
}

if (txbZahl2.Text != null)
{
     Ergebnis += Convert.ToDouble(txbZahl2.Text);
}

MessageBox.Show(Ergebnis.ToString());

LG Karim

P
P584 Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren

Hm, nein funzt nicht.

"Die Eingabezeichenfolge hat das falsche Format."

meldet er, wenn ich das Programm ausführe und nicht alle 15 Felder mit Zahlen fülle.

K
85 Beiträge seit 2008
vor 14 Jahren

Dann ersetze

null

mit

""
5.742 Beiträge seit 2007
vor 14 Jahren

Hallo P584,

herzlich willkommen hier auf myCSharp.de!

Eine Alternative wäre, statt Textboxen _NumericUpDown_s zu verwenden. Dann hättest du schon mal ein paar Probleme weniger.

Statt des "txbZahl1.Text != null" solltest du besser "!String.IsNullOrEmpty(txbZahl1.Text)" schreiben - dann zählen auch leere Strings - null ist der Text einer TextBox IMHO eher selten.

Außerdem solltest du lieber Double.TryParse statt Convert.ToDouble verwenden - dann kannst du den Code sogar wie folgt umschreiben:


double zahl;
if (Double.TryParse(txbZahl1.Text, out zahl))
   ergebnis += zahl;

Allerdings wird dann auch z.B. "abc123" als 0 erkannt.

T
381 Beiträge seit 2009
vor 14 Jahren

Statt des "txbZahl1.Text != null" solltest du besser "!String.IsNullOrEmpty(txbZahl1.Text)" schreiben - dann zählen auch leere Strings - null ist der Text einer TextBox IMHO eher selten.

Laut MS ist

txbZahl1.Text.Length > 0

das beste 😃

3.430 Beiträge seit 2007
vor 14 Jahren

Hallo Tarion,

es wird zwar nur ganz selten vorkommen dass ein string NULL ist aber es kann vorkommen.

siehe


string abc = null;
bool c = abc.Length > 0;

Hier würde es krachen weil du nicht auf Length zugreifen kannst wenn der String null ist

Deshalb würde ich den Vorschlag von winSharp93 empfehlen

Gruss
Michael

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo michlG,

Hier würde es krachen weil du nicht auf Length zugreifen kannst wenn der String null ist

im Allgemeinen hast du recht. Da muss man berücksichtigen, dass ein String auch null sein kann. Bei den Standard-Controls - um die es hier ja geht - und bei gut programmierten eigenen Controls wird als Text nie null zurückgegeben.

Deshalb würde ich den Vorschlag von winSharp93 empfehlen

Wie man einen String am besten auf leer testet wurde ausführlich in myString == "" oder string.Length == 0. Es gibt da keine klar beste Lösung, sondern unterschiedliche Ansichten drüber.

herbivore

P
P584 Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren

Hallo,

danke für die vielen Antworten!

Das ganze klappt jetzt prima mit

!String.IsNullOrEmpty(txbZahl1.Text)

also dem Vorschlag von winSharp93.

Gruß Paul

3.825 Beiträge seit 2006
vor 14 Jahren

Ich mache das so (quick & dirty) :

Double.TryParse("0" + txbZahl1.Text, out zahl);

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3