我有一个为汽车经销商解释和排序数据的程序,尝试检索存储在数组中的汽车的颜色时出现错误。
这是主类及其子类。
class Car
{
protected String model;
protected int price;
protected int year;
public Car(String m, int y, int p)
{
model = m;
price = p;
year = y;
}
}
class NewCar extends Car
{
protected String color;
public NewCar(String m, int y, int p, String c)
{
super(m, y, p);
color = c;
}
public String toString()
{
return "Model: " + model + "\n"
+ "Year: " + year + "\n"
+ "Price: $" + price + "\n"
+ "Color: " + color + "\n"
+ "Selling Price: " + price + "\n\n";
}
}
这是另一个发生错误的类,位于
if(cars[z].color.equals(shade))
。程序无法在Car类中找到可变颜色。
class CarDealerShip
{
public String printAllCarsOfColor(String shade)
{
String s = "";
for(int z = 0; z < i; z++)
{
if(cars[z].color.equals(shade))
{
s += "Car " + (z + 1) + "\n" + cars[z].toString();
}
}
return s;
}
如何在存在可变颜色的NewCar类中使程序看起来如何?
最佳答案
如果要求color
必须在类NewCar
中,则可以使用instanceof
运算符,然后进行强制转换:
class CarDealerShip
{
public String printAllCarsOfColor(String shade)
{
String s = "";
for(int z = 0; z < i; z++)
{
if (cars[z] instanceof NewCar)
{
NewCar nc = (NewCar)cars[z];
if (nc.color.equals(shade))
{
s += "Car " + (z + 1) + "\n" + nc.toString();
}
}
}
return s;
}
}
实际上,您跳过了每个
Car
而不是NewCar
的所有内容,仅使用那些属于类NewCar
的实例。