2015-07-10 16 views
0

使用一個小項目掙扎我爲自己學習Java而努力。我的目標是創建一個程序來存儲Car對象列表。然後允許用戶搜索特定的汽車並輸出它們全部(如果它們存在)。汽車對象應該包含型號名稱,註冊號,vin和顏色。以下是我迄今爲止:試圖製作一個2d數組程序來存儲汽車對象列表

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

什麼是您的二維數組維度?順便說一句,你沒有使用二維數組。 – 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. 要創建二維數組,您需要使用以下語法:Car[][] carArr = new Car[5][5]。這將創建一個5x5類型的汽車陣列。來遍歷它,你將需要使用一個嵌套循環:

    對(INT I = 0;我< carrArr.length;我++){ 對(INT J = 0;Ĵ< carrArr [I] .lenght ; J ++){ ... }}

*干將制定者的使用允許你控制哪些對象屬性暴露和用戶如何與他們進行互動。

相關問題