//package distancelearningstunden.Bsp208; package Bsp208; import java.util.InputMismatchException; import java.util.Random; import java.util.Scanner; public class CarFactory { // Lt Klassendiagramm /* +------------------------------- | CarFactory +------------------------------- | - brandNames : String[] | - modelNames : String[] | - cars : Car[] | - numberOfCars : int +------------------------------- | + createCars() : void | + printCars() : void | + changePriceOfCar() : void +------------------------------- */ // private String[] brandNames = new String[5]; private String[] brandNames = {"VW", "Mercedes", "BMW", "Bugatti", "Ferrari"}; // private String[] modelNames = new String[10]; private String[] modelNames = { "Golf", "T180C", "i8", "Veron", "458Spider", "T5 Multivan", "280SE", "M7", "Chiron", "308GTO"}; private Car[] cars; // NUR DEKLARATION - GROESSE WISSEN WIR NICHT! private int numberOfCars; private Scanner scanner = new Scanner(System.in); public void createCars(){ System.out.println("create Cars"); // Benutzereingabe -> numberOfCars boolean userInput = true; // Deklararion / Initialiserung do{ try{ // wir gehen davon aus, dass der Benutzer richtig eingibt ... userInput = true; System.out.println("Enter number of cars: "); numberOfCars = scanner.nextInt(); } catch(InputMismatchException ex){ System.out.println("Wrong input ... please try again"); // Nun hat der Benuzter eine falsche Eingabe gemcht -> Exception // Setzen des flags (userInput) auf false, damit die do-while // Schleife weiterlaeuft. userInput = false; } } while(!userInput); // erzeugen des Car-Arrays aufgrund der Benutzereingabe // cars-Array wird initialisiert cars = new Car[numberOfCars]; // Zufallig brand und model aussuchen Random random = new Random(); // generate a random number from 0 until excul. brandNames.length float priceUpperLimit = 10000.0f; float priceLowerLimit = 1000.0f; for(int i = 0; i < numberOfCars; ++i){ int randomBrand = random.nextInt(brandNames.length); int randomModel = random .nextInt(modelNames.length); float randPrice = random.nextFloat() * (priceUpperLimit - priceLowerLimit) + priceLowerLimit; Car newCar = new Car(brandNames[randomBrand], modelNames[randomModel], randPrice); cars[i] = newCar; } } public void printCars(){ System.out.println("----------------------------"); for(int i = 0; i < numberOfCars; ++i){ System.out.println((i+1) + " " + cars[i]); } } public void changePriceOfCar(){ int elementNumber = 0; System.out.println("Change price of car: "); // Elementnumber erwartet elementNumber = scanner.nextInt(); int indexOfCarToChangeThePrice = elementNumber - 1; // index ist elementCounter - 1 /* Wo legen meine erzeugten 'car' herum -> alle liegen auf dem Array */ Car carToChangeThePrice = cars[indexOfCarToChangeThePrice]; System.out.println("Car " + carToChangeThePrice.getBrand() + "-" + carToChangeThePrice.getModel()); System.out.println("Actual proce: " + carToChangeThePrice.getPrice()); System.out.print("New price: "); float newPrice = scanner.nextFloat(); carToChangeThePrice.setPrice(newPrice); } public static void main(String[] args) { CarFactory carFactory = new CarFactory(); carFactory.createCars(); carFactory.printCars(); carFactory.changePriceOfCar(); carFactory.printCars(); } }