2015-07-10 2 views
0

Борясь с небольшим проектом, я поставил себе задачу изучить Java. Моя цель - создать программу для хранения списка объектов Car. Затем, чтобы позволить пользователю искать конкретный автомобиль и выводить все из них, если они существуют. Объект автомобиля должен содержать название модели, регистрационный номер, номер и цвет. Вот то, что я до сих пор:Попытка создать 2-мерную программу для хранения списка объектов автомобиля

package carObjects; 

public class cars { 

    public static int length; 
    private String modelName; 
    private String carColour; 
    private int regNumber; 
    private int vin; 

    public cars(String string, String string2, int i) { 

    } 

    public String toString() { 
     return "Model Name: " + modelName + "Registration Number: " + regNumber 
       + "Vin" + vin + "Car Colour: " + carColour; 
    } 

    public String getLast() { 
     return modelName; 
    } 
} 

     for (int i = 0; i < cars.length; i++) { 
      cars[i] = new cars("A", "B", 10); 
     } 

     for (cars p : cars) { 
      System.out.println(p.getLast()); 

     } 
    } 
} 
+1

Не могли бы вы уточнить, с чем борется? – Ztyx

+0

Каковы размеры вашего 2D-массива? Кстати, вы не используете 2D-массив. – Karthik

+1

Пожалуйста, улучшите вопрос, очень неясно, чего вы хотите. Обратитесь к этому, чтобы улучшить свой вопрос: [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) – Codi

ответ

0

Лучше всего было бы отделить упражнение в двух различных классов:

class Car { 

    private String modelName; 
    private String carColour; 
    private int regNumber; 
    private int vin; 

    public int getVin() { 
     return vin; 
    } 

    public void setVin(int vin) { 
     this.vin = vin; 
    } 

    // other getter/setter 

    @Override 
    public String toString() { 
     return "Car: " + getVin(); 
    } 

    @Override 
    public int hashCode() { 
     return vin; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     return (obj != null) 
      && (obj instanceof Car) 
      && ((Car) obj).getVin() == this.getVin(); 
    } 
} 

CarSet класс имеет методы поиска: поиск

class CarList extends HashSet<Car> { 

    public Car serarchByVin(int vin) { 
     List<Car> list = new ArrayList<>(this); 
     for (Car c : list) { 
      if (c.getVin() == vin) { 
       return c; 
      } 
     } 
     return null; 
    } 

    public CarSet searchByModel(String model) { 
     CarSet result = new CarSet(); 
     List<Car> list = new ArrayList<>(this); 
     for (Car c : list) { 
      if (c.getModelName()== model) { 
       result.add(c); 
      } 
     } 
     return result; 
    } 

    @Override 
    public String toString() { 
     String result = "carList: "; 
     for (Car c : this) { 
      result += c; 
     } 
     return result; 
    } 
} 
0

Здесь некоторые из вещей, которые вам нужно будет сделать:

  1. Поскольку вы хотите разрешить поиск, вам нужно будет предоставить аксессурам свойства, которые вы хотите, чтобы пользователь искал. Например, если вы хотите разрешить пользователям искать по модели, вам нужно будет открыть свойство model. Вы, кажется, делают это с помощью метода getLast(), однако, название сбивает с толку *

  2. Проблема с этим кодом:. for (int i = 0; i < cars.length; i++) { cars[i] = new cars("A", "B", 10); } Это он создает серию одинаковых предметов. Вы можете использовать значение i, чтобы предоставить некоторые фиктивные переменные значения. Это позволит вам проверить, что ваш поиск действительно работает.

  3. Имена конструкторов должны начинаться с верхнего регистра, как и имена классов.

  4. cars(String string, String string2, int i): Пожалуйста, предоставьте содержательные имена вашим переменным. Это упростит чтение кода.

  5. Вам нужно будет назначить переменные, которые вы получаете через свой конструктор. Как и в настоящий момент, ваши поля не будут инициализированы тем, что вы предоставляете.

  6. Чтобы создать 2D-массив, вам понадобится следующий синтаксис: Car[][] carArr = new Car[5][5]. Это создаст массив типа 5x5. Чтобы перебрать его, вам нужно будет использовать вложенный цикл:

    для (INT I = 0, я < carrArr.length, я ++) { для (Int J = 0; J < carrArr [я] .lenght ; j ++) { ... }}

* использование добытчиков и сеттеров позволяет контролировать, какие свойства объекта подвергаются и как пользователи могут взаимодействовать с ними.

Смежные вопросы