Fragensteller
Division C#

Frage
-
int deck = Convert.ToInt32(texDeck.Text); int count = Convert.ToInt32(texCount.Text); float ergebnis = 0; if (deck <= 51) { ergebnis = count / 1; } else if (deck >= 52 && deck <= 103) { ergebnis = count / 2; } else if (deck >= 155 && deck <= 207) { ergebnis = count / 3; } else if (deck >= 208 && deck <= 259) { ergebnis = count / 4; } else if (deck >= 260 && deck <= 312) { ergebnis = count / 5; } textBox4.Text = Convert.ToString(ergebnis); }
Mein problem ist er teilt nicht .. er soll auch teilen wenn ergebis - seien soll hab ich was falsch gemacht in dem code oder braucht ihr ganzen um es zu verstehen ?
Alle Antworten
-
Also es gibt eine textBox ( texCount ) in dem Fall und da wird ständig eine zahl eingetragen ... das kann eine - so wohl auch + zahl sein und dann gibt es eine texbox ( texdeck) da werden die zahlen von 312 runter gezählt und zwischen jeweiligen spannen soll es durch 5 geteilt werden 4 ect ...
-
Hallo Arthur,
so wirklich verstehe ich nicht wo das Problem liegt. Versuche mal dein Problem in ordentlichen Sätzen mit Satzzeichen unter Beachtung der Groß- und Kleinschreibung zu formulieren. Stelle dir vor du wüsstest nicht was du vor hast und musst deine eigene Erklärung verstehen.
Das einzige was ich mir vorstellen kann ist, dass dich stört keine Kommazahlen zu erhalten. Das liegt daran, dass du zwei Integer durch einander dividierst. Da kommt auch immer ein Integer bei heraus. Mindestens eine der Zahlen muss ein float oder ein anderer dezimaler Datentyp sein. Beispielsweise so:
float count = Convert.ToInt32(texCount.Text);
Oder aber du konvertierst die Konstanten in Float-Werte. Oder aber beides.
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 -
Mein problem ist er teilt nicht .. er soll auch teilen wenn ergebis - seien soll hab ich was falsch gemacht in dem code oder braucht ihr ganzen um es zu verstehen ?
Hi,
wieso teil "er" nicht? "Er" sollte eine Integer-Division durchführen (also keine "Kommazahlen" ausspucken). Ist es vielleicht das, was Dich stört? Kovertiere count zu einem Float oder Double, oder teile durch double-literale wie etwas 4.0 oder 2.0 etc. (Hat aber Tom schon gesagt...)
Viele Grüße,
Thorsten
- Bearbeitet Thorsten Gudera Mittwoch, 24. Februar 2016 01:56
-
Hallo Arthur,
deine "if...else if..." - Konstruktion hat ein Problem, sobald "deck" größer als 312 ist.In dem Fall ist dein "ergebnis" immer 0.
Du kannst das nebenbei auch etwas übersichtlicher darstellen:
int deck = Convert.ToInt32("313"); int count = Convert.ToInt32("33"); float ergebnis = 0; if ( deck <= 51 ) { ergebnis = count / 1; } else if ( deck <= 103 ) { ergebnis = count / 2; } else if ( deck <= 207 ) { ergebnis = count / 3; } else if ( deck <= 259 ) { ergebnis = count / 4; } else if ( deck <= 312 ) { ergebnis = count / 5; } else { ergebnis = 1704; }
Nebenbei machen mich die vorgehenden Antworten etwas nachdenklich. Nicht der fachlichen Seite wegen.
Gruß
-
Hallo
ich würde es anders angehen. zum einen würde ich die doppelten && weglassen und nur einfaches & verwenden.
Zum anderen würde ich die 2 Valiablen deck und Count auch bereits als float vorhalten.
wenn du eine Int durch eine int teilst wird daraus auch wieder eine int. in deinem fall hast du eine int als valiable und die festen zahlen sind auch int.
bitte gebe doch auch mal genauer an was in den valiablen steht und was bei dir dann rauskommt. so kann man das schwer nachvollziehen.
-
Hallo zusammen,
@K. Pather
Nebenbei machen mich die vorgehenden Antworten etwas nachdenklich. Nicht der fachlichen Seite wegen.
Was genau meinst du?
@Tavok
ich würde es anders angehen. zum einen würde ich die doppelten && weglassen und nur einfaches & verwenden.
Warum? Ein einfaches & sorgt dafür das beide seiten ausgeführt werden was hier nicht nötig ist. Es gibt fast keine Einsatzszenarien für das einfache & für eine logische UND-Verknüpfung.
BTW, Wenn vorher jeder kleinere Wert geprüft wird, kann man sich die erste Abfrage auch ganz sparen, denn diese wird immer true sein. Jeweils die Hintere Seite reicht, so wie K. Pater es gezeigt hat.
Alles andere as du geschrieben hast sind nur Wiederholungen von den anderen Antworten...
@Arthur Mir kam gerade noch ein neuer Gedanke was du vielleicht meinst. Du schriebst dass die Zahl in count auch negativ sein kann. Wenn das der Fall ist, wird in den ersten if-Zweig hinein gesprungen und durch 1 gerechnet, was natürlich nichts bewirkt. Meinst du das? Hier musst du entweder die erste if-Bedingung anpassen oder eine zusätzliche einbauen.
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 -
Hallo,
nun ich habe mir das nun noch etwas angeschaut und stelle nun fest das du hier folgenden Fall hast
Ist deck im bereich von 104 bis 154 dann wird nichts geteilt und es kommt 0 heraus
gleiches gilt sobald deck großer 312 ist
@Tom Lambert
Man lernt nie aus. Danke für die Erklärung des Unterschieds
-
Warum? Ein einfaches & sorgt dafür das beide seiten ausgeführt werden was hier nicht nötig ist. Es gibt fast keine Einsatzszenarien für das einfache & für eine logische UND-Verknüpfung.
Hi,
ein Anwendungsfall für das einfache & ist dann gegeben, wenn eine Methode involviert ist, die Werte verändert. Der logische Ausdruck wird von links nach rechts unter Berücksichtigung der Klammern berechnet. Wenn jetzt im linken Ausdruck eine Funktion genutzt wird, die u.U. Werte verändert, die dann im rechten Ausdruck ausgewertet werden, dann ist ein einfaches & erforderlich.--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut