Advertisement
Samorokimetal

Car 15.11.2020

Nov 14th, 2020
961
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.47 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.lang.Cloneable;
  4. import java.lang.Comparable;
  5. import java.util.Calendar;
  6. import java.util.Comparator;
  7.  
  8. public class Car implements Cloneable, Comparable {
  9.     private String brand;
  10.     private String model;
  11.     private String color;
  12.     private double hp;
  13.     private String engine;
  14.     private String gearbox;
  15.     private int year;
  16.  
  17.     public Car(String brand, String model, String color, double hp, String engine, String gearbox, int year) {
  18.         this.setBrand(brand);
  19.         this.setModel(model);
  20.         this.setColor(color);
  21.         this.setHp(hp);
  22.         this.setEngine(engine);
  23.         this.setGearbox(gearbox);
  24.         this.setYear(year);
  25.     }
  26.  
  27.     public String getBrand() {
  28.         return brand;
  29.     }
  30.  
  31.     public void setBrand(String brand) {
  32.         this.brand = brand;
  33.     }
  34.  
  35.     public String getModel() {
  36.         return model;
  37.     }
  38.  
  39.     public void setModel(String model) {
  40.         this.model = model;
  41.     }
  42.  
  43.     public String getColor() {
  44.         return color;
  45.     }
  46.  
  47.     public void setColor(String color) {
  48.         this.color = color;
  49.     }
  50.  
  51.     public double getHp() {
  52.         return hp;
  53.     }
  54.  
  55.     public void setHp(double hp) {
  56.         if (hp > 0) {
  57.             this.hp = hp;
  58.         } else {
  59.             System.out.println("Invalid input for horse power");
  60.         }
  61.     }
  62.  
  63.     public String getEngine() {
  64.         return engine;
  65.     }
  66.  
  67.     public void setEngine(String engine) {
  68.         this.engine = engine;
  69.     }
  70.  
  71.     public String getGearbox() {
  72.         return gearbox;
  73.     }
  74.  
  75.     public void setGearbox(String gearbox) {
  76.         this.gearbox = gearbox;
  77.     }
  78.  
  79.     public int getYear() {
  80.         return year;
  81.     }
  82.  
  83.     public void setYear(int year) {
  84.         int currYear = Calendar.getInstance().get(Calendar.YEAR);
  85.         if (year > 0 && year <= currYear) {
  86.             this.year = year;
  87.         } else {
  88.             System.out.println("Invalid input for year of manufacture");
  89.         }
  90.     }
  91.  
  92.     public static Car[] changeFirstLetterOfBrand(Car[] cars, char letter) {
  93.         Car[] carBrandChanged = new Car[cars.length];
  94.         for (int i = 0; i < cars.length; i++) {
  95.             try {
  96.                 carBrandChanged[i] = (Car) cars[i].clone();
  97.             } catch (CloneNotSupportedException e) {
  98.                 e.printStackTrace();
  99.             }
  100.             carBrandChanged[i].setBrand(letter + cars[i].getBrand().substring(1));
  101.         }
  102.         return carBrandChanged;
  103.     }
  104.  
  105.     public static Car[] sortCarsByBrandName(Car[] cars, String definingOrder) {
  106.         Car[] sortedCarsByBrand = new Car[cars.length];
  107.         for (int i = 0; i < cars.length; i++) {
  108.             try {
  109.                 sortedCarsByBrand[i] = (Car) cars[i].clone();
  110.             } catch (CloneNotSupportedException e) {
  111.                 e.printStackTrace();
  112.             }
  113.         }
  114.  
  115.         if (definingOrder.equalsIgnoreCase("Ascending")) {
  116.             Arrays.sort(sortedCarsByBrand, Comparator.comparing(carsSort -> carsSort.getBrand()));
  117.         } else if (definingOrder.equalsIgnoreCase("Descending")) {
  118.             Arrays.sort(sortedCarsByBrand, Comparator.comparing(carsSort -> carsSort.getBrand()));
  119.             Car[] tempCarArray = new Car[sortedCarsByBrand.length];
  120.             for (int i = 0; i < cars.length; i++) {
  121.                 try {
  122.                     tempCarArray[i] = (Car) sortedCarsByBrand[i].clone();
  123.                 } catch (CloneNotSupportedException e) {
  124.                     e.printStackTrace();
  125.                 }
  126.             }
  127.             for (int i = 0; i < sortedCarsByBrand.length; i++) {
  128.                 sortedCarsByBrand[sortedCarsByBrand.length - i - 1] = tempCarArray[i];
  129.             }
  130.         }
  131.         return sortedCarsByBrand;
  132.     }
  133.  
  134.     public static Car[] deleteRepetitiveCars(Car[] carsInput) {
  135.         ArrayList<Car> carsArrList = new ArrayList<>(Arrays.asList(carsInput));
  136.         for (int i = 0; i < carsArrList.size(); i++) {
  137.             for (int j = 0; j < carsArrList.size(); j++) {
  138.                 if (carEquals(carsArrList.get(i), carsArrList.get(j)) && i != j) {
  139.                     carsArrList.remove(j);
  140.                 }
  141.             }
  142.         }
  143.         Car[] cars = carsArrList.toArray(new Car[carsArrList.size()]);
  144.         return cars;
  145.     }
  146.  
  147.     public static boolean carEquals(Car car1, Car car2) {
  148.         if (
  149.                 car1.getBrand().equals(car2.getBrand()) &&
  150.                         car1.getModel().equals(car2.getModel()) &&
  151.                         car1.getColor().equals(car2.getColor()) &&
  152.                         car1.getHp() == (car2.getHp()) &&
  153.                         car1.getEngine().equals(car2.getEngine()) &&
  154.                         car1.getGearbox().equals(car2.getGearbox()) &&
  155.                         car1.getYear() == (car2.getYear())
  156.         ) {
  157.             return true;
  158.         }
  159.         return false;
  160.     }
  161.  
  162.     @Override
  163.     public String toString() {
  164.         return "[Brand: " + this.brand +
  165.                 ", Model: " + this.model +
  166.                 ", Color: " + this.color +
  167.                 ", hp: " + hp +
  168.                 ", engine: " + engine +
  169.                 ", gearbox: " + engine +
  170.                 ", year: " + year +
  171.                 "]";
  172.     }
  173.  
  174.     @Override
  175.     protected Object clone() throws CloneNotSupportedException {
  176.         return super.clone();
  177.     }
  178.  
  179.     @Override
  180.     public int compareTo(Object o) {
  181.         return 0;
  182.     }
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement