Benutzer mit den meisten Antworten
Bruttorechner Programmierhilfe (Text Box Inhalt in Label ausgeben)

Frage
-
Hey,
ich bin noch ein C# Anfänger. Ich muss nun für die Schule einen Bruttorechner programmieren. Dieser Rechner soll wenn der entsprechende Radio Button aktiviert ist unten im Label die Mehrwertsteuer sowie den Bruttogehalt ausgeben. Nun bekomme ich aber jedes mal eine Fehlermeldung, warum auch immer. Habe unten Screenshots angehängt, hoffe mir kann da jemand helfen.
Hier der Code für den Berechnen -Button, welcher die Fehlermeldung in der Zeile lblA3.Text = i * 100 / 19 anzeigt:
private void cmdBerechnen_Click(object sender, EventArgs e) { int i; if (txtEingabe.Text == "") return; i = Convert.ToInt32(txtEingabe.Text); if (rB3.Checked) lblA3.Text = i * 100 / 19; }
Antworten
-
Hallo Felix,
bitte poste immer die genaue und vollständige Fehlermeldung, die Du erhältst und gib die Codezeile an, die den Fehler auslöst. Das hilft uns enorm bei der Fehlersuche und bei der Hilfestellung, letztendlich also auch dir, da Du dann schneller (oder überhaupt erst) eine Antwort erhältst.
Mein Versuch: Ich nehme mal an, es kommt ein Fehler in der Zeile mit lblA3.Text = ...? Falls liegt das daran, dass ein double/decimal/int/... nunmal kein String ist, die "Text" Eigenschaft eines Labels aber einen String erwartet.
lblA3.Text = ( 5 * 100 / 19 ).ToString();
wäre dann eine Möglichkeit. Allerdings kommt dabei dann ein ganzzahliger Wert raus, was wahrscheinlich nicht das gewünschte Ergebnis darstellt, oder?
lblA3.Text = ( 5 * 100.0 / 19.0 ).ToString();
Kommt dem gewünschten Eregbnis wahrscheinlich schon eher nahe.
lblA3.Text = ( 5 * 100.0 / 19.0 ).ToString( "N2" );
reduziert das Ergebnis dann auf 2 Nachkommastellen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Juni 2016 08:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 23. Juni 2016 11:35
-
Hallo felix mal so ein kleiner Tipp am Rande um von i 19% zu bekommen darfst du nicht "i * 100 / 19" sondern musst "i *19 / 100" rechnen oder einfach "(double)i * 0.19D" das gibt dir auch 19% aus. Ist aber nur ganz einfache Prozentrechnung^^.
Als letztes wäre es gut das ganze noch in einen string umzuwandeln, da so einer ja auch angezeigt werden soll :
lblA3.Text = ((double)i * 0.19D).ToString();
Ich hoffe ich konnte dir helfen^^
Falls das nicht hilft schick bitte mal deine Fehlermeldung
My website: http://www.dragonskills99.16mb.com
- Bearbeitet DragonSkills99 Mittwoch, 8. Juni 2016 14:55
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Juni 2016 08:18
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 23. Juni 2016 11:36
-
Hallo Felix,
poste bitte in Zukunft die Fehlermeldung immer mit, nicht immer ist es so offensichtlich für einen Experten woran es scheitert.
Wenn du den Teil rechts neben dem = ausrechnest kommt wieder ein Integer raus[1]. Die Text-Eigenschaft ist dagegen ein string und diese Typen kann man zwar in einander konvertieren, aber das muss man auch explizit angeben. Also so hier:
lblA3.Text = (i * 100 / 19).ToString();
Da i sowie die 19 und 100 je ein Integer ist kommt als Ergebnis auch wieder ein Integer heraus. Das heißt der KOmmateil des Ergebnisses würde fehlen. Daher musst du entweder ein D an die Zahlen anhängen oder den Kommateil 0 mit anfügen. Nachfolgend mal beides gezeigt:
lblA3.Text = (i * 100D / 19.0).ToString();
Dann wird auch der Kommaanteil mit berücksichtigt.
PS: Schau dir mal double.TryParse an, für den Fall dass du Falscheingaben (Buchstaben o.ä.) auch richtig verarbeiten willst.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Juni 2016 08:24
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 23. Juni 2016 11:35
Alle Antworten
-
Hallo Felix,
poste bitte in Zukunft die Fehlermeldung immer mit, nicht immer ist es so offensichtlich für einen Experten woran es scheitert.
Wenn du den Teil rechts neben dem = ausrechnest kommt wieder ein Integer raus[1]. Die Text-Eigenschaft ist dagegen ein string und diese Typen kann man zwar in einander konvertieren, aber das muss man auch explizit angeben. Also so hier:
lblA3.Text = (i * 100 / 19).ToString();
Da i sowie die 19 und 100 je ein Integer ist kommt als Ergebnis auch wieder ein Integer heraus. Das heißt der KOmmateil des Ergebnisses würde fehlen. Daher musst du entweder ein D an die Zahlen anhängen oder den Kommateil 0 mit anfügen. Nachfolgend mal beides gezeigt:
lblA3.Text = (i * 100D / 19.0).ToString();
Dann wird auch der Kommaanteil mit berücksichtigt.
PS: Schau dir mal double.TryParse an, für den Fall dass du Falscheingaben (Buchstaben o.ä.) auch richtig verarbeiten willst.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Juni 2016 08:24
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 23. Juni 2016 11:35
-
Hallo Felix,
bitte poste immer die genaue und vollständige Fehlermeldung, die Du erhältst und gib die Codezeile an, die den Fehler auslöst. Das hilft uns enorm bei der Fehlersuche und bei der Hilfestellung, letztendlich also auch dir, da Du dann schneller (oder überhaupt erst) eine Antwort erhältst.
Mein Versuch: Ich nehme mal an, es kommt ein Fehler in der Zeile mit lblA3.Text = ...? Falls liegt das daran, dass ein double/decimal/int/... nunmal kein String ist, die "Text" Eigenschaft eines Labels aber einen String erwartet.
lblA3.Text = ( 5 * 100 / 19 ).ToString();
wäre dann eine Möglichkeit. Allerdings kommt dabei dann ein ganzzahliger Wert raus, was wahrscheinlich nicht das gewünschte Ergebnis darstellt, oder?
lblA3.Text = ( 5 * 100.0 / 19.0 ).ToString();
Kommt dem gewünschten Eregbnis wahrscheinlich schon eher nahe.
lblA3.Text = ( 5 * 100.0 / 19.0 ).ToString( "N2" );
reduziert das Ergebnis dann auf 2 Nachkommastellen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Juni 2016 08:25
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 23. Juni 2016 11:35
-
Hallo felix mal so ein kleiner Tipp am Rande um von i 19% zu bekommen darfst du nicht "i * 100 / 19" sondern musst "i *19 / 100" rechnen oder einfach "(double)i * 0.19D" das gibt dir auch 19% aus. Ist aber nur ganz einfache Prozentrechnung^^.
Als letztes wäre es gut das ganze noch in einen string umzuwandeln, da so einer ja auch angezeigt werden soll :
lblA3.Text = ((double)i * 0.19D).ToString();
Ich hoffe ich konnte dir helfen^^
Falls das nicht hilft schick bitte mal deine Fehlermeldung
My website: http://www.dragonskills99.16mb.com
- Bearbeitet DragonSkills99 Mittwoch, 8. Juni 2016 14:55
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 14. Juni 2016 08:18
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 23. Juni 2016 11:36
-
Hi,
um mein Senf auch noch dazu zu geben :)
Hier meine Variante die die meisten Fehler abfangen sollte:
// Do not allow empty input if (string.IsNullOrWhiteSpace(txtEingabe.Text)) { return; } uint i = 0; if(uint.TryParse(txtEingabe.Text, out i) == false) { return; // String isn't a unsigned number } if (rB3.Checked) { lblA3.Text = ((i / 19) * 100).ToString(); }
Gruß,
David