Erste Schritte Auto betanken

TheManneken

Neues Mitglied
Hallo!

Ich habe gerade ein primitives Programm geschrieben, in dem ein Auto betankt und gefahren werden soll. Wenn es betankt wird, wird jedoch die doppelte Menge des Tankvorgangs zum Kraftstoffvorrat hinzugefügt. Ich vermute den Fehler in der Methode tanken(), aber ich finde ihn nicht... ???:L

Java:
class Auto{
  
  private String modell;
  private int kmStand;
  private double verbrauch;
  private double tankVolumen;
  private double kraftstoffVorrat;
  
  public Auto(String modell, int kmStand, double verbrauch, double tankVolumen, double kraftstoffVorrat){
    this.modell = modell;
    this.kmStand = kmStand;
    this.verbrauch = verbrauch;
    this.tankVolumen = tankVolumen;
    this.kraftstoffVorrat = kraftstoffVorrat;
  }
  
  public void info(){
    System.out.println("Kilometerstand: " + kmStand + ", Tankinhalt: " + kraftstoffVorrat);
  }
  
  public String toString(){
    return "Fahrzeugmodell: " + modell + ", Kilometerstand: " + kmStand + ", Verbrauch: " + verbrauch + ", Tankinhalt: " + kraftstoffVorrat
      + ", Tankvolumen: " + tankVolumen; 
  }
  
  public void fahren(int km){
    kmStand += km;
    if((km*verbrauch/100) > kraftstoffVorrat)
      System.out.println("Zu wenig Kraftstoff! Erst tanken!");
    else{
      kraftstoffVorrat -= (km*verbrauch/100);
      System.out.println("Sie fahren " + km + " km und verbrauchen dabei " + (km*verbrauch/100) + " l Kraftstoff");}
  }
  
  public void tanken(double liter){
    if((kraftstoffVorrat += liter)>tankVolumen){
      System.out.println("Tank ist voll!");
      this.kraftstoffVorrat = tankVolumen;
    }else{
    kraftstoffVorrat += liter;
    System.out.println("Sie tanken " + liter + " l. Tankinhalt jetzt: " + kraftstoffVorrat);
    }
  }
  
}

Java:
class AutoTest{
  public static void main (String[] args){

    Auto golf = new Auto("VW Golf",92000,9.8,52,41);
    System.out.println(golf);
    
    golf.fahren(200);
    System.out.println(golf);
    
    golf.fahren(300);
    System.out.println(golf); 
    
    golf.tanken(10);
    System.out.println(golf); 
    
    golf.fahren(300);
    System.out.println(golf); 
    
    golf.tanken(15);
    System.out.println(golf); 

  }
}
 
Zuletzt bearbeitet von einem Moderator:
T

Tomate_Salat

Gast
Jup da liegt der Fehler:
Java:
public void tanken(double liter){
    if((kraftstoffVorrat += liter)>tankVolumen){
      System.out.println("Tank ist voll!");
      this.kraftstoffVorrat = tankVolumen;
    }else{
    kraftstoffVorrat += liter;
    System.out.println("Sie tanken " + liter + " l. Tankinhalt jetzt: " + kraftstoffVorrat);
    }
  }

Du addierst 2x den Wert liter zu Kraftstoff. Also entweder das if zu folgendem abändern:
Java:
if((kraftsotffVorrat+liter)>...

oder den else-teil löschen.

Um solche Fehler zu finden hilft es, die Methode einfach zu debuggen oder mit zettel und stift selber mal schritt für schritt durchzugehen.
 

Ähnliche Java Themen

Neue Themen


Oben