Frage von RebelOfBerlin, 25

BlueJ Methode unverändert lassen?

Folgende Klassikeraufgabe für Schüler: Simulation von Benzinverbrauch bei Autos.

Nun sollen wir natürlich auch den Kontostand des Fahrers einbringen, d.h. wenn der Fahrer kein Geld hat, dann wir auch nicht getankt.

Wenn ich nun jedoch 20 Liter tanken will, ohne Geld zu haben, wir mir zwar via System.out,println angezeigt, dass ich nicht tanken kann, die 20 Liter werden aber trotzdem hinzugefügt und der Kontostand geht ins Minus.

Wie kann ich das verhindern? Ich suche im Prinzip nach einem Befehl mit der Aussage "lasse unverändert".

Danke an die lieben Informatiknerds da draußen - erbitte dringend eure Hilfe! MfG der, die das RebelofBerlin

Antwort
von karajan9, 20

Wenn du uns deinen Code zeigen könntest wäre das deutlich leichter zu beantworten.

Irgendwo musst du mit einer if-Abfrage testen, ob genug Geld vorhanden ist. Fallst true, kannst du tanken, falls false eben nicht.

Kommentar von RebelOfBerlin ,

public class Auto
{
private int kmStand;
private double tankvolumen;
private double verbrauch;
private double tankinhalt;
private double kontostand;

public Auto()
{
kmStand = 0;
tankvolumen = 50;
verbrauch = 0.065;
tankinhalt = 0;
kontostand = 0;
}

public void tanken(int liter)
{
kontostand = kontostand - (liter * 1.30);
tankinhalt = tankinhalt + liter;

if(tankinhalt > tankvolumen)
{
tankinhalt = tankvolumen;

System.out.println("So viel koennen Sie nicht tanken. Maximale Menge wurde getankt.");
}
if(kontostand - (liter * 1.30) <= 0)
{
System.out.println("Sie haben nicht genug Geld, um diese Menge zu tanken!");
}
}

public void einzahlen(int Euro)
{
kontostand = kontostand + Euro;
}

public void fahren(int km)
{
// Computer sagt nein.
kmStand = km + kmStand;
tankinhalt = tankinhalt - (km * verbrauch);
}

public void anzeigen()
{
System.out.println("Sie sind nun " + kmStand + " Kilometer gefahren und haben noch " + tankinhalt + " Liter im Tank.");

if(tankinhalt >= 0.1 && tankinhalt < 10)
{
System.out.println("Ihre Tankfüllung von " + tankinhalt + " Litern wird nicht mehr lang ausreichen. Sie sollten wohl besser tanken.");
}
if(tankinhalt <= 0)
{
System.out.println("Das heißt: Ihr Wagen ist mitten im Nichts abgesoffen. Haha.");
}
if(kontostand <= 0)
{
System.out.println("Sie sind komplett pleite.");
}
if(kontostand >= 0.1 && kontostand < 20)
{
System.out.println("Auf Ihrem Konto sind nur noch " + kontostand + " Euro. Zahlen Sie demnächst wieder etwas ein!");
}
System.out.println("Ihr Kontostand liegt bei " + kontostand + " Euro.");
}
}

Ich hoffe, das hilft nun irgendwie weiter ^^

Antwort
von RBM1992, 7

Ich denke, am einfachsten wäre es vielleicht so:

class Auto{
public double kontostand;

// noch einige andere Sachen...

public void Tanken(double Liter)
{
if(kontostand < 0 || (kontostand - liter * 1.3) < 0)
{
system.out.println("Sie haben nicht genügend Geld zum tanken!");
// An dieser Stelle die Methode einfach verlassen.
// Ein Return ohne Wert springt aus der aktuellen Methode,
// unabhängig vom Return-Value.
return;
}
// Das else sparen wir uns hier, wegen des returns im if.
}
}

Viele Programmierer und jeder machts anders ;-)

Antwort
von Givemybest, 8

Erstelle eine if.clause die das Tanken nur erlaubt, falls man Geld hat also z.B. if(geld>0)

...

}

Kommentar von Givemybest ,

Achso das Problem liegt hier : 

if(kontostand <= 0) 

System.out.println("Sie sind komplett pleite."); 

Du musst hier das Tanken verhindern

Kommentar von RebelOfBerlin ,

Naaah, das macht Sinn - manchmal sieht man den Wald vor lauter Bäumen einfach nicht - Dankeschön ^^

Kommentar von Givemybest ,

Bitte :)

Antwort
von triopasi, 11

Du musst das

kontostand = kontostand - (liter * 1.30); 
tankinhalt = tankinhalt + liter; 

mit in die IFs rein machen, die du ja schon richtig benutzt ;)

Keine passende Antwort gefunden?

Fragen Sie die Community