Frage von PeterFranz1234, 44

C# Zahlen aus Listbox via Button zusammenzählen geht das?

Hi :)

Also wir müssen für die Schule so ein komisches Programm schreiben mit dem man sich errechnen kann wie viel z.B. das Menü bei McDonalds kostet so ich bin in zwischen so weit das ich das habe: Man kann Buttons anklicken und dadurch wird ein Zahlenwert in eine ListBox eingefügt. Wobei ich einfach eingegeben habe das er z.B. wenn ich den "Button1" Drücke soll er den Wert "2.50" in die Listbox einfügen und ich bin und war mir nicht sicher ob ich einen "." oder ein "," nehmen soll. Ich möchte einfach auf den Button "Berechnen" klicken und es rechnet mir den Wert aus der in einem label steht (label1)

Mein Problem ist allerdings das ich diese Zahlen einfach nicht zusammenrechnen kann. Ich weiß nicht wie und habe keine Ahnung weil unser Lehrer sagt immer "Google hilft immer" im ernst!

Da ich in Google nichts gefunden habe was mir helfen könnte frage ich jetzt mal hier :) Wäre sehr froh wenn mir jemand helfen könnte :)

Antwort
von xGlumi, 44

Ich kann dir leider nur in VB.Net eine 100%ige Lösung schreiben.
Es gibt aber Online VB.Net -> C#-Converter, die C#-Codes die ich gleich poste sind dann halt von dem Onlineconverter sollten aber genauso funktionieren :)

Du musst komma benutzen anstelle von Punkten.

VB.Net


Dim summe As Double = 0.0
For Each item As Object In ListBox1.Items
summe += item
Next
'Die Ausgabe liegt jetzt in der Variable

C#

double summe = 0.0;
foreach (object item in ListBox1.Items) {
summe += item;
}
//Die Ausgabe liegt jetzt in der Variable
Kommentar von PeterFranz1234 ,

OK ich entschuldige mich schon mal für die Frage aber wie gesagt bin neuling im Thema:

Ich bekom den Error "Der +=Operator kann nicht auf Operanden von Typ "double" und "object" angewendet werden" 

Interpretiere ich das richtig das double und object so nicht genutzt werden können?

Kommentar von xGlumi ,

Sorry, wusste nicht dass C# das nicht kann.

Habe es eben durchgetestet, du musst die Zeile durch folgende ersetzen:

summe +=  Convert.ToDouble(item);

MFG xGlumi

Kommentar von PWolff ,

Das Problem ist hier in VB und C# dasselbe: ListBox.Item ist eine Auflistung von Elementen vom Typ Object; die ListBox zeigt das Ergebnis der ToString-Funktion dieser Objekte an.

Ich würde als Wert zum Einfügen die Zahl nehmen, kein String. (Typ Double oder Decimal - für Preise empfiehlt Microsoft Decimal, aber wenn ihr in der Schule Double nehmt, nimm das). Die Darstellung mit dem Komma macht die ToString-Funktion automatisch, wenn das in den Systemeinstellungen so eingetragen ist.

Dann kannst du

summe += (double)item;

verwenden. Die Typumwandlung kann nicht fehlschlagen, da als item ja ein Wert vom Typ double eingetragen worden ist.

Kommentar von xGlumi ,

Du brauchst zwar keine Antwort, aber du bekommst denoch eine.

Wenn du Leuten helfen möchtest, dann bitte mit korrektem Code (und bitte ohne Erklärung die ein Falsches Vorgehen rechtfertigt)


Hab extra nochmal VisualStudio aufgemacht, um dir eben den Fehler zu copy/pasten, der bei deiner Variante kommen wird.


Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in SandboxC.exe aufgetreten.
Zusätzliche Informationen:
Die angegebene Umwandlung ist ungültig.

MFG xGlumi

Kommentar von PeterFranz1234 ,

Das passiert jedoch nur bei 

summe += (double)item;
bei 
summe +=  Convert.ToDouble(item);
zumindest bei mir nicht
Kommentar von PeterFranz1234 ,

Wobei es eigentlich bei beiden funktionieren sollte keine Ahnung warum nur bei einem es erscheint mir recht unlogisch

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten