有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我的对象值不会保存。显示空值

我有三门课:

  1. 运动装(超类)
  2. 泽西岛(亚类)
  3. 司机

我的车手里有一个ArrayList,用来存放我所有的运动衫。 当用户输入所有值(库存、价格、产品、团队、套件、尺寸、性别)时, 它会将它们显示回来,它会显示空值:

Product: null
In stock: 0
Price: 0
Team: 
Kit: 
Size: 
Gender:

超类(Sportswear)有变量stock, price and product(因此我可以包括其他产品,而不仅仅是运动衫)

子类(Jersey)包含变量team, kit, size, gender。它还包含方法jerseyDisplay(),它显示了上面的内容

输入值后,我在驱动程序中输入:

Jersey jersey = new Sportswear(stock, price, product, team, kit, size, gender);

sportswear.add(jersey);


jersey.jerseyDisplay();

这完全错了吗?为什么输入的值没有显示出来

子类Jersey中的jerseyDisplay()方法是:

public void jerseyDisplay()
    {
        super.sportswearDisplay();

        System.out.println("Team: "+team);

        System.out.println("Kit: "+kit);

        System.out.println("Size: "+size);

        System.out.println("Gender: "+gender);
    }

@DessertIvy这是运动服超类:

public class Sportswear
{
    //instance variables
    private int stock;
    private float price;
    private String product;

    //blank constructor
    public Sportswear()
    {
        this.stock = 0;
        this.price = 0;
        this.product = "";
    }

    //detailed constructor
    public Sportswear(int s, float p, String pd)
    {
        this.stock = stock;
        this.price = price;
        this.product = product;
    }

    //setters
    public void setStock(int stock)
    {
        this.stock = stock;
    }

    public void setPrice(float price)
    {
        this.price = price;
    }

    public void setProduct(String product)
    {
        this.product = product;
    }

    //getters
    public int getStock()
    {
        return stock;
    }

    public float getPrice()
    {
        return price;
    }

    public String getProduct()
    {
        return product;
    }

    //increase stock
    public int increaseStock()
    {
        stock = stock++;
        return stock;
    }

    //decrease stock
    public int decreaseStock()
    {
        stock = stock - 1;
        return stock;
    }

    public void sportswearDisplay()
    {
        System.out.println("Product: "+product);
        System.out.println("In stock: "+stock);
        System.out.println("Price: "+stock);
    }

}

Jersey子类中的构造函数:

public Jersey(int stock, float price, String product, String team, String kit, String size, String gender)
    {
        super(stock, price, product);
        this.team = "";
        this.kit = "";
        this.size = "";
        this.gender = "";
    }

共 (1) 个答案

  1. # 1 楼答案

    问题在您的两个承包商内:

        //detailed constructor
    public Sportswear(int s, float p, String pd)
    {
        this.stock = stock;
        this.price = price;
        this.product = product;
    }
    

    public Jersey(int stock, float price, String product, String team, String kit, String size, String gender)
    {
        super(stock, price, product);
        this.team = "";
        this.kit = "";
        this.size = "";
        this.gender = "";
    }
    

    您应该使用作为参数传递的值初始化变量。。。或者使用setXXX方法。在构造函数中,它应该如下所示:

            //detailed constructor
    public Sportswear(int s, float p, String pd)
    {
        this.stock = s;
        this.price = p;
        this.product = pd;
    }
    

    此外,正如前面提到的,这一行 Jersey jersey = new Sportswear(stock, price, product, team, kit, size, gender);甚至不应该编译。。。你可能是指Jersey jersey = new Jersey(stock, price, product, team, kit, size, gender);