Zum Inhalt springen

Problem mit Code in C# - Kraftstoffverbrauch


DarkerAngel13

Empfohlene Beiträge

Hi, ich bräucht mal eure Hilfe.

Ich weiß nicht, wo bei diesem Code für den Kraftstoffverbrauch der Fehler liegt. So hat ihn unser Lehrer vorgegeben. Habe vergessen, die Textboxen umzubenennen.

Bsp.: Ich habe getankte Liter: 70 l; gefahrene Kilometer: 1000 km, Preis pro Liter: 1,00 €

Wenn ich das Programm ausführe, bekomme ich bei Verbrauch auf 100km: 1428,57 l und bei den Kraftstoffpreis je 100km: 1428,57 €

private void cmdberechnen_Click(object sender, EventArgs e)
        {
            try
            {
                km = Convert.ToDouble(textBox1.Text);

                liter = Convert.ToDouble(textBox2.Text);
                preis = Convert.ToDouble(textBox3.Text);
                verbrauch = liter * 100 / km;
                kosten = verbrauch * preis;
                textBox4.Text = "Verbrauch auf 100 km: " + verbrauch.ToString("F2") + "Liter" + Environment.NewLine;
                textBox4.Text += "\nKraftstoffpreis je 100 Km: " + kosten.ToString("C");
            }
            catch
            {
                MessageBox.Show("nur Zahlen eingeben");
                textBox1.Text = textBox2.Text = textBox3.Text = null;
                textBox1.Focus();
            }

        }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,
bei den Werten die du raus bekommst, scheint es Probleme mit den Eingabewerten aus den TextBoxen zu geben.

Setze daher einen Breakpoint bei der Berechnung des Verbrauchs und schaue nach was in den Feldern km, Liter und preis steht.
Sind die Variablen(km, preis, liter, verbrauch, kosten) alle vom Typ double?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist ein Haltepunkt, bei der das Programm beim Debuggen (Starte das Programm aus dem VisualStudio mit F5) anhält.
Einen Haltepunkt setzt du am schnellsten mit der Taste F9 in die Zeile wo sich der Cursor gerade befindet. Erneutes drücken von F9 entfernt diesen wieder.
Wenn das Programm dort anhält, kannst du dir die aktuellen Werte der Variable anschauen und mit F10/F11 im Programm schrittweise weiterspringen. Mit F5 geht es weiter zum nächsten Haltepunkt. Der gelbe Pfeil markiert die Position an der das Programm sich gerade befindet.

OffTopic: Mich wundert es, dass dies noch nicht drangekommen ist und ihr schon mit Oberflächen hantiert. Aber das ist ein anderes Thema. ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 39 Minuten schrieb Mttkrb:

OffTopic: Mich wundert es, dass dies noch nicht drangekommen ist und ihr schon mit Oberflächen hantiert. Aber das ist ein anderes Thema. ;-)

Danke dir. Ich hab das Gefühl, dass die im 3. Semester anfangen und irgendwann später das 1. Semester dran kommt. Bin jetzt in der 4. Woche des 1. Semesters.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hinweis 1: arbeite bei wahrungsbeträgen nie mit double! C# bietet dafür den decimal-datentyp. 

Hinweis 2: schreibe nie die Logik in der UI! Das macht die Logik untestbar und falls du mal die UI tauschen möchtehst, musst du die Logik noch mal implementieren.

Bearbeitet von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 22 Minuten schrieb Whiz-zarD:

mmh, irgendwie macht die ganze Berechnung keinen Sinn.
Das müsste doch:


verbrauch = liter / km * 100

heißen. 

Das ist in diesem Fall nicht von Bedeutung, da wir zwei Punktrechnungen haben.

Verbrauch = 70 / 1000 * 100; // 7

Verbrach = 70 * 100 / 1000; // Ebenfalls 7

Deine Rechnungen sind richtig, ich habe das mal nachvollzogen. Du musst also einen Fehler bei der Eingabe gemacht haben. Sind eventuell die Dezimaltrennzeichen deines Systems andere, als du denkst? Dann kommt ganz schnell was falsches herraus.

Deine Rechnung an sich ist jedoch zweifelsohne richtig, selbst das Rechnen in Double-Werten stellt hier kein Problem dar. Nachvollzogen habe ich das natürlich mit den von dir gegebenen Parametern.

Gruß

Sebastian

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Stunden schrieb grueni:

Sieht so aus, als hättest du "km" und "liter" vertauscht. Werden die km wirklich in textBox1 und die Liter in textBox2 eingegeben?

Danke grueni. Ich hab sie tatsächlich verwechselt gehabt. Komisch, dass das einem selbst gar nicht auffällt.

Jetzt stimmts nämlich, bei den von mir angegbenen Werten.

Verbrauch auf 100 km: 7,00Liter

Kraftstoffpreis je 100 Km: 7,00 €

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 23 Stunden schrieb DarkerAngel13:

Danke grueni. Ich hab sie tatsächlich verwechselt gehabt. Komisch, dass das einem selbst gar nicht auffällt.

Jetzt stimmts nämlich, bei den von mir angegbenen Werten.

Verbrauch auf 100 km: 7,00Liter

Kraftstoffpreis je 100 Km: 7,00 €

Darf ich dir mit auf den Weg geben, dass dir das mit einer sprechenden Bezeichnung deiner UI-Controls nicht passiert wäre? :)

Mach dir das Leben leichter, und verzichte auf textBox2 usw., sondern mach direkt textBoxKM daraus.

Gruß

Sebastian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...