在一个小项目中苦苦挣扎我已经开始学习Java了。我的目标是创建一个程序来存储Car对象列表。然后允许用户搜索特定的汽车并输出所有汽车(如果存在)。汽车对象应包含型号名称,注册号,vin和颜色。以下是我到目前为止的情况:
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());
}
}
}
答案 0 :(得分: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;
}
}
答案 1 :(得分:0)
以下是您需要做的一些事情:
由于您希望允许搜索,因此您需要将访问者公开给您希望用户搜索的属性。例如,如果要允许用户按模型搜索,则需要公开model
属性。您似乎是通过getLast()
方法执行此操作,但名称令人困惑。*
此代码存在问题:for (int i = 0; i < cars.length; i++) {
cars[i] = new cars("A", "B", 10);
}
是它正在创建一系列相同的对象。您可以使用i
的值来提供一些虚拟的,更改的值。这将允许您测试您的搜索确实有效。
构造函数名称应以大写字母开头,就像类名一样。
cars(String string, String string2, int i)
:请为您的变量提供有意义的名称。这将使您的代码更易于阅读。
您需要分配通过构造函数获得的变量。因此,目前您的字段不会被初始化为您提供的字段。
要创建2D数组,您需要使用以下语法:Car[][] carArr = new Car[5][5]
。这将创建一个类型为car的5x5
数组。要迭代它,您将需要使用嵌套循环:
for(int i = 0; i&lt; carrArr.length; i ++){ for(int j = 0; j&lt; carrArr [i] .lenght; j ++){ ... } }
*
使用 getters 和 setters 可以控制公开哪些对象属性以及用户如何与它们进行交互。