import java.util.*;
import java.lang.*;
import java.io.*;
public class Autofahren
{
private static final String DIESEL
= "D"; private static final String BENZIENER
= "B";
private static final int MAX_TANKFUELLUNG = 70;
private static final int MAX_KM_STAND = 100000;
private static final int MAX_BENZINVERAUCH = 15;
private double tankFuellung;
private double kmStand;
private double benzinVerbrauch;
public Autofahren() {
tankFuellung = 0;
kmStand = 0;
benzinVerbrauch = 0;
fahrzeugTyp = "";
}
public Autofahren
(double tankFuellung,
double kmStand,
double benzinVerbrauch,
String fahrzeugTyp
) { setTankFuellung(tankFuellung);
setKmStand(kmStand);
setBenzinVerbrauch(benzinVerbrauch);
setFahrzeugtyp(fahrzeugTyp);
}
public void fahren(int km) {
if (km <= 0) {
System.
err.
println("Es muessen mehr als 0 km gefahren werden."); return;
}
if(km > kmMoeglich()) {
System.
err.
println("Es ist nicht möglich " + km
+ " km zu fahren, da nur noch " + kmMoeglich
() + " km gefahren werden können."); return;
}
kmStand += km;
}
public double kmMoeglich() {
if(benzinVerbrauch <= 0) {
System.
err.
println("Der Kraftstoffverbrauch muss groesser 0 sein."); return 0;
}
return (tankFuellung / benzinVerbrauch) * 100;
}
public void detailAusgabe() {
System.
out.
println("Ihr Kilometerstand beträgt: " + kmStand
+ " km"); System.
out.
println("Ihre Tankfüllung beträgt: " + tankFuellung
+ " Liter"); System.
out.
println("Ihr Benzinverbrauch pro 100 km beträgt: " + benzinVerbrauch
); System.
out.
println("Sie können noch fahren: " + kmMoeglich
() + " km");
if(fahrzeugTyp.equals(BENZIENER)) {
System.
out.
println("Sie fahren ein Benzin-Fahrzeug"); } else if(fahrzeugTyp.equals(DIESEL)) {
System.
out.
println("Sie fahren ein Diesel-Fahrzeug"); } else {
System.
out.
println("Fahrzeugtyp unbekannt"); }
}
private boolean istGueltigerFahrzeugtyp
(String fahrzeugTyp
) { if(fahrzeugTyp.equals(BENZIENER) || fahrzeugTyp.equals(DIESEL)) {
return true;
}
System.
err.
println("Der Fahrzeugtyp " + fahrzeugTyp
+ " wird nicht unterstützt."); return false;
}
private boolean istGueltigeTankfuellung(double tankFuellung) {
if(tankFuellung > MAX_TANKFUELLUNG) {
System.
err.
println("Die maximale Tankfuellung beträgt " + MAX_TANKFUELLUNG
+ " Liter, es wurde aber versucht " + tankFuellung
+ " Liter zu tanken."); return false;
}
return true;
}
private boolean istGueltigerKmStand(double kmStand) {
if(kmStand > MAX_KM_STAND) {
System.
err.
println("Der maximale Kilometerstand beträgt " + MAX_KM_STAND
+ " km, es wurde aber versucht den Kilomterstand auf" + kmStand
+ " km zu setzen."); return false;
}
return true;
}
private boolean istGueltigerBenzinverbrauch(double benzinVerbrauch) {
if(benzinVerbrauch > MAX_BENZINVERAUCH) {
System.
err.
println("Der maximale Benzinverbrauch beträgt " + MAX_BENZINVERAUCH
+ " Liter/100km, es wurde aber versucht den Benzinverbrauch auf" + benzinVerbrauch
+ " km/100km zu setzen."); return false;
}
return true;
}
public double getTankFuellung() {
return tankFuellung;
}
public void setTankFuellung(double tankFuellung) {
if(istGueltigeTankfuellung(tankFuellung)) {
this.tankFuellung = tankFuellung;
}
}
public double getKmStand() {
return kmStand;
}
public void setKmStand(double kmStand) {
if(istGueltigerKmStand(kmStand)) {
this.kmStand = kmStand;
}
}
public double getBenzinVerbrauch() {
return benzinVerbrauch;
}
public void setBenzinVerbrauch(double benzinVerbrauch) {
if(istGueltigerBenzinverbrauch(benzinVerbrauch)) {
this.benzinVerbrauch = benzinVerbrauch;
}
}
public String getFahrzeugtyp
() { return fahrzeugTyp;
}
public void setFahrzeugtyp
(String fahrzeugTyp
) { if(istGueltigerFahrzeugtyp(fahrzeugTyp)) {
this.fahrzeugTyp = fahrzeugTyp;
}
}
}