我有一个为汽车经销商解释和排序数据的程序,尝试检索存储在数组中的汽车的颜色时出现错误。

这是主类及其子类。

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的实例。

07-24 14:02