package taschenrechner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Autoverwaltung {
/* Die Klasse Autoverwaltung besitzt die Klassenvariablen */
static int anzahlVermieteAutos; // deklarieren der statischen Variablen
static int gesamtFahrleistung;
static double durchschnittlicheFahrleistung;
static ErweitertesAuto autos[] = new ErweitertesAuto[10]; // ein statisches Array (10 slots)
public static void dialog() throws IOException
{ //Methode Dialog
boolean fertig = false; //Boolean Typ wird mit False deklariert
while(!fertig){//Whileschleife wird durchlaufen, solange ende nicht wahr ist
System.out.println("Herzlich Willkommen zu Fahrzeugvermietung");
System.out.println("Wählen Sie nun zwischen "
+"\n" +"[1]Informationen über Fahrzeuge"
+"\n" +"[2]Fahrzeug ausleihen"
+"\n" +"[3]Gesamtübersicht"
+"\n" +"[4]Programm beenden");
BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));// Aus dem Package IO, KLasse BufferedReader
int auswahl = Integer.parseInt(eingabe.readLine());// Ein lesen des Integerwerts
switch(auswahl) {
case 1: info();
break;
case 2: vermietung();
break;
case 3: ct();
break;
case 4: System.exit(-1);
} fertig= false; // ist fertig // while schleife ist nun false
}
}
public static void vermietung() throws IOException{
BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in)); //BufferedReader wird erzeugt
try{
for(int i = 0;i < 5;i++){//for-schleife von 1 bis 5 durchlaufen
System.out.println("Auto "+(i+1)+":"); //Text mit aktuellem Zählerstand wird ausgegeben
if(!autos[i].vermietet)
autos[i].info();
else System.out.println("vermietet");
}
System.out.println("Hallo, welches Auto möchten Sie sich gerne mieten?");
int auswahl = (Integer.parseInt(eingabe.readLine())-1);
while (!(auswahl>=0 && auswahl<=4)) //überprüfen der eingabe von [0] - [4]
{
System.out.println("\n----------\n Auto konnte nicht gefunden werden. " +
"Bitte wählen Sie ein anderes Auto aus. " );
auswahl =(Integer.parseInt(eingabe.readLine())-1);
}
System.out.println("Bitte geben Sie ihren Namen ein");
autos[auswahl].setFahrer(eingabe.readLine());
System.out.println("Bitte geben Sie ihr Geburtsjahr ein " +
"ein!\n");
int year = Integer.parseInt(eingabe.readLine());
if (year>1991)
{
System.out.println("Auto fahren darf man leider erst mit 18 J. !"
+ "Wir wünschen Ihnen noch einen schönen Tag");
System.exit(-1);
}
System.out.println("Bitte geben Sie ihr Fahrziel ein");
String target = eingabe.readLine();
if (!Autoverwaltung.nameOkay(target))
{
System.out.println("Eingabefehler");
System.exit(-1);
}
System.out.println("Bitte geben Sie die Entfernung ein");
int distance = Integer.parseInt(eingabe.readLine());
autos[auswahl].faehrtnach(target, distance);// Methode faehrt nach mit formalen Parametern wird aufgerufen
autos[auswahl].vermietet = true;
anzahlVermieteAutos++;// Nach dem auswahl getroffen wurde ist ein Auto nun vermietet
gesamtFahrleistung = gesamtFahrleistung + distance;
}
catch (IOException e) //catch-Block, falls Fehler auftreten...
{
System.out.println("Fehler" + e.getMessage());
}
catch (NumberFormatException a) // Fehler der bei falscher Zahleneingabe entsteht
{
System.out.println("Achtung - Sie haben eine NumberFormatException ausgelöst");
System.out.println("AEs gab folgendes Problem " + a.getMessage());
}
}
public static void ct(){
System.out.println("Fahrzeug-Gesamtübersicht");
System.out.println("Vermietete Autos : "+anzahlVermieteAutos);
System.out.println("Gesamtfahrleistung "+gesamtFahrleistung);
if (!(anzahlVermieteAutos == 0)) { //muss erst ein Auto vermietet werden
durchschnittlicheFahrleistung = gesamtFahrleistung / anzahlVermieteAutos;
}//durch null darf man nicht teilen
System.out.println("Durchschnittliche Fahrleistung "+ durchschnittlicheFahrleistung);
System.out.println("Gesamtübersicht : ");
for (int i = 0;i<5;i++){
autos[i].info();
}
}
public static void main(String[] args) throws IOException {
autos[0] = new ErweitertesAuto(" ", "Auto ","rot",1980, 110,230000,"München",15498);
autos[1] = new ErweitertesAuto("", "Auto","gelb",2001, 120,25900,"Rostock",15468);
autos[2] = new ErweitertesAuto("", "Auto","blau",2005, 89,5000,"Berlin",15426);
autos[3] = new ErweitertesAuto("", "Bagger","grün",1999, 55,100000,"Hamburg",33256);
autos[4] = new ErweitertesAuto("", "Auto","silber",2000, 205,50000,"Trier",15487);
dialog();
}
private static boolean nameOkay(String name) {
if (name == null || name.isEmpty()) // wenn keine Werte in die eingabe einfließen = Rückgabe false !
return false;
// zum Beispiel (ansonsten evtl. Regex)
char[] ca = name.toCharArray(); // Der eingegbene String wird in ein CharArray verwandelt und anschließend wird jedes einzelne Zeiche
for (char c : ca) // überprüft.
if (!Character.isLetter(c)) // aufrufen der isLetter Methode von Klasse Character um zu prüfen ob es sich um einen Buchstaben handelt
return false; // wenn es sich um keinen Buchstaben handelt = false.
return true;
}
public static void info(){
for(int i = 0; i < autos.length; i++){
System.out.println("Auto: "+(i+1)+"\t"); // Ausgabe der Autos
if(autos[i]!=null){
autos[i].info(); // Aufruf der info Methode
}else{
System.out.println("leer");
}
}
}