[Java] Probleme mit "Auto-Rechner"

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Ba55Mutant, 26. September 2010 .

Schlagworte:
  1. 26. September 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Probleme mit "Auto-Rechner"

    Tag!

    Wir sollen in unseren Kurs einen "Auto-Rechner" programieren, nur komme ich grad nicht weiter... Ich komm halt einfach nicht drauf, ich glaub ich hab grad gut ein Brett vorm Kopf!

    Es geht um folgende Aufgaben:

    Spoiler
    Bild

    Meine Probleme sind, dass ich bei 4.1 und 4.2 den Fehler nicht finde, weil es auch so ganz gut klappt...^^
    Dann fehlt mir die Formel für 4.3, die nicht genau den Benzinverbrauch berechnen soll, sondern halt nur dass wenn mehr Gewicht ist auch mehr Verbraucht wird. Da habe ich mir Überlegt, dass man das ja mit ner If-Schleife machen könnte aber gibt es da nicht eine elegantere Lösung?

    Und was würdet ihr noch dazunehmen bei 4.4? Wärme des Motors, Abrieb der Reifen?

    Noch zur Info:

    Wir programmieren mit dem "Hilfs-Programm" BlueJ und das ist auch erst unser 2tes Projekt, also es muss nicht ultimativ werden...

    Hier noch der bisherige Quelltext:
    Code:
    public class Auto
    {
     double tankvolumen, benzinstand, verbrauch, kmstand, leergewicht, gesamtgewicht, person_a, person_b, person_c, person_d, gepäck;
     
     public Auto(double Tankvolumen, double Benzinstand, double Verbauch, double Kilometerstand)
     {
     tankvolumen = Tankvolumen;
     benzinstand = Benzinstand;
     verbrauch = Verbauch;
     kmstand = Kilometerstand;
     }
     
     public void tanken(double liter)
     {
     benzinstand = benzinstand + liter;
     }
     
     public void fahren (double kilometer)
     {
     kmstand = kmstand + kilometer;
     benzinstand = benzinstand - kilometer/100*verbrauch;
     }
     
     public void gewicht (double Leergewicht, double Person_a, double Person_b, double Person_c, double Person_d, double Gepäck)
     {
     leergewicht = Leergewicht;
     gepäck = Gepäck;
     person_a = Person_a;
     person_b = Person_b;
     person_c = Person_c;
     person_d = Person_d;
     gesamtgewicht = leergewicht + gepäck + person_a + person_b + person_c + person_d;
     
     }
    }
    Vielen Dank schonmal im Voraus!
     
  2. 26. September 2010
    AW: Probleme mit "Auto-Rechner"

    Zu Aufgabe 1 und 2

    Code:
    
    
    public void tanken(double liter)
     {
     
    if (liter>0) {
    this.benzinstand += liter;
    } 
    }
     
     public void fahren (double kilometer)
     {
     
    if (kilometer>0) {
     this.kmstand += kilometer;
     this.benzinstand += - kilometer/100*verbrauch;
    } 
    }
    
    
    
    Die Syntax der beiden Funkionen ist die du geschrieben hast ist korrekt, es kann sich nur um
    Fehlerabfragen bei 0 Werten oder oder Code Kosemetische Dinge handeln
     
  3. 26. September 2010
    AW: Probleme mit "Auto-Rechner"

    4.1 Du hast ja noch die Variable tankvolumen, die wird aktuell garnicht berücksichtigt.

    4.2 Der Benzinstand kann negativ werden, was nicht sein darf. Was ist, wenn man 0 Kilometer fährt?

    4.3 Mach die Personen, Gewicht oder so doch in ein Array oder ArrayList, sofern ihr das schon gelernt habt.

    4.4 Spontan würde ich auf jeden Fall noch Luftwiderstand sagen (hat ja auch etwas mit Verbrauch zu tun)
     
  4. 27. September 2010
    AW: Probleme mit "Auto-Rechner"

    4.1 Wie die beiden Vorposter schon sagten, kannst du ja keine negative Anzahl an Litern Tanken und du kannst nicht mehr Tanken, als dein Tankvolumen hergibt.

    Naja 0 Kilometer ist ja kein problem. Dann wird der Tankinhalt nicht reduziert und der kilometerstand nicht angehoben.
    Das problem ist jedoch der negative benzinstand. das wäre noch recht leicht zu lösen, indem du den einfach auf 0 setzt, wenn er negativ wird. Du musst allerdings die gefahrenen kilometer berechnen, weil du ja ohne benzin nicht noch weiter rollst.
    Desweiteren darf der kilometerstand nicht runter gehen, wenn du ne negative zahl an kilometern einträgst. entweder er bleibt gleich oder wird erhöht. denn noch musst du den benzinverbrauch berechnen

    4.3 nach java namenskonvention sind variablen immer mit kleinbuchstaben zu beginnen, auch bei parametern. Desweiteren ist CamelCase vorgesehen, deswegen wäre personA "schöner".
    wenn du den selben namen als parameter und als objektvariable benutzen willst kannst du this.personA=personA; schreiben. das this.personA ist dann die objektvariable und personA ist der parameter, wenn der name doppelt ist.
    außerdem steht in dem text ja, dass dein auto ein zulässiges gesamtgewicht hat. also musst du das prüfen und eventuell die zuladung von personen oder gepäck verbieten

    4.4
    Mal ehrlich, wie soll sich der luftwiederstand denn ändern? bei gegenwind? bei fahrten auf dem mount everest?

    schneller fahrstil, sparsamer fahrstil: evtl bei fahren nen parameter dazu, der nen offset angibt, wie sparsam jemand fährt. 1.5 ist dann rasen auf der autobahn, 0.8 sparsames fahren oder so (da könntest du auch den "Luftwiederstand" mit einrechnen xD)

    wartungsleuchte: nimm ne km zahl, nach der ne wartungsleuchte angeht. wenn man mehr fährt ist egal, wenn man dann in der werkstatt war, geht se wieder aus und der zähler wird resettet.

    bei dem konstruktor kannst du auch abfragen, dass die werte nicht negativ sind oder dass der tankinhalt nicht mehr sein darf als das tankvolumen
     
  5. 27. September 2010
    AW: Probleme mit "Auto-Rechner"

    Ich habe damals im Physik gelernt, dass der Luftwiderstand in Bezug auf die Geschwindigkeit exponentiell zunimmt, weshalb man bei 140 km/h Durchschnittsgeschwindigkeit mehr Sprit verbraut als bei 133 km/h. Kann man auch mit Fahrstil lösen, würde dann noch "Stadt" hinzufügen.
     
  6. 28. September 2010
    AW: Probleme mit "Auto-Rechner"

    Also vielen Dank schonmal!

    Ich hab jetzt als Fahrstil agressiver, defensiver, und normaler... Soll der Realität ja auch nur Nahe kommen...

    Könnt ihr mir nochmal genau erklären was das "this." vor einer Variable bedeutet? Benutzt man das einfach nur wenn die Objektvariable und der Parameter das gleiche ist? Also um es sich einfach zu machen?!

    Und zu dem Gesamtgewicht: Das würde ich jetzt aus dem Bauch heraus mit einer if-Schleife lösen... Also wenn das Gewicht z.B. über 1000 ist dann verbraucht er so und so viel mehr! Theoretisch kann man das ja dann auch in Zusammenhang mit dem Leergewicht setzen, denn ansonsten kann es ja passieren, dass man ein Auto hat was von vornerein schon über 1000kg hat und somit auch gleich doppelt soviel verbraucht. Oder wie würdet ihr das machen?^^

    Hier nochmal der Quelltext:

    Spoiler
    Code:
    public class Auto
    {
     double tankvolumen, benzinstand, verbrauch, kmstand, leergewicht, gesamtgewicht, personA, personB, personC, personD, gepäck;
     
     public Auto(double Tankvolumen, double Benzinstand, double Verbauch, double Kilometerstand)
     {
     tankvolumen = Tankvolumen;
     benzinstand = Benzinstand;
     verbrauch = Verbauch;
     kmstand = Kilometerstand;
     }
     
     public void tanken(double liter)
     {
     if (liter>0) 
     {
     this.benzinstand += liter;
     } 
     }
     
     public void normalesfahren (double kilometer)
     {
     if (kilometer>0)
     {
     this.kmstand += kilometer;
     this.benzinstand += - kilometer/100*verbrauch;
     } 
     }
     
     public void agressivesfahren (double kilometer)
     {
     if (kilometer>0)
     {
     this.kmstand += kilometer;
     this.benzinstand += (- kilometer/100*verbrauch) * 1.3;
     } 
     }
     
     public void defensivesfahren (double kilometer)
     {
     if (kilometer>0)
     {
     this.kmstand += kilometer;
     this.benzinstand += (- kilometer/100*verbrauch) * 0.7;
     } 
     }
     
     public void gewicht (double Leergewicht, double personA, double personB, double personC, double personD, double Gepäck)
     {
     this.leergewicht = leergewicht;
     this.gepäck = gepäck;
     this.personA = personA;
     this.personB = personB;
     this.personC = personC;
     this.personD = personD;
     gesamtgewicht = leergewicht + gepäck + personA + personB + personC + personD;
     
     }
    }
     
  7. 28. September 2010
    AW: Probleme mit "Auto-Rechner"

    ja genau deswegen.

    IF-SCHLEIFE !!!!!! gibt es nicht *gg
    IF-Verzweigung

    wieso machst du es nicht so das das gewicht ein faktor für den benzinverbrauch ist.
    verbrauch 100km = 5l
    verbrauch + extragewicht = 5l + extragewicht / 100
    so verbraucht er für jede 100kg 1 liter mehr
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.