Добавление транспортных средств в список массивов с помощью конструктора - PullRequest
0 голосов
/ 01 февраля 2019

Я создал свой класс с именем AutoMobile ();Теперь мне нужно создать методы для программы Auto Inventory, чтобы добавить автомобиль, распечатать список автомобилей, удалить автомобили и обновить атрибуты.

Что меня смущает, так это как я вызываю конструктор, чтобы создать новую машину, принимая пользовательский ввод для объекта конструктора и поля в конструкторе?

Это мой класс:

public class AutoMobile {

//initialize private variables
private String make;
private String model;
private String color;
private int year;
private int mileage;

public AutoMobile() {
    this("Default make", "Default model", "Default color", 2019, 0);
    System.out.println("Empty constructor called");
}

public AutoMobile(String make, String model, String color, int year, int mileage) {
    this.make = make;
    this.model = model;
    this.color = color;
    this.year = year;
    this.mileage = mileage;
}

Я смог сделать это, чтобы у меня был список в основном.Тем не менее, мне нелегко распечатать содержимое списка.

public class Main {


public static AutoMobile addAuto(List<AutoMobile> autoInventory) {
    Scanner addCar = new Scanner(System.in);

    System.out.println("Enter Vehicle Make: ");
    String make = addCar.nextLine();

    System.out.println("Enter Vehicle Model: ");
    String model = addCar.nextLine();

    System.out.println("Enter Vehicle Color: ");
    String color = addCar.nextLine();

    System.out.println("Enter Vehicle Year: ");
    int year = addCar.nextInt();

    System.out.println("Enter Vehicle Mileage: ");
    int mileage = addCar.nextInt();

    AutoMobile car =  new AutoMobile(make, model, color, year, mileage);

    autoInventory.add(car);

    addCar.close();

  return car;


}

public static void removeAuto() {
    //todo will be used to remove auto from invetory list

}

public static void printVehicles(List<AutoMobile> autoInventory) {
    //todo allows user to print inventory lsit

}

public static void updateAttributes() {
    //todo allows user to update attribute of specific vehicle

}


public static void main(String[] args) {
    List<AutoMobile> autoInventory = new ArrayList<AutoMobile>();

   AutoMobile newCar = (addAuto(autoInventory));

    for (AutoMobile val: autoInventory) {
        System.out.println(val);

    }



}

}

Фактический список не распечатывается:

enter image description here

1 Ответ

0 голосов
/ 01 февраля 2019

Вам не нужно определять все атрибуты автомобиля при его создании.Вы можете установить его атрибуты, как вы идете.Например, если конструктор выглядит следующим образом:

public AutoMobile(String color, String type) {
    this.color = color;
    this.type = type;
}

и у вас есть атрибут с именем manufacturer, тогда хорошо определить этот член a private или protected:

private String manufacturer;

и определите для него геттер и сеттер:

public String getManufacturer() {
    return manufacturer;
}

public AutoMobile setManufacturer(String manufacturer) {
    this.setManufacturer = manufacturer;
    return this; //You can chain setters this way, but the method can be void as
    //well if that's your preference
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...