销售一种商品的商店

时间:2014-05-14 00:09:41

标签: java

好的,我不知道如果我正确编写了代码请检查。所以我为一个销售一种商品的商店创建了软件。我班上的每个实例都应该是我商店出售的商品。

例如,如果我的商店销售领带,我会设计一个领带类:

类领带{...

我的类必须有五个实例变量,包括至少一个整数类型,至少一个String类型和一个必须为double的price。此外,它应该有一个toString方法,它不接受任何参数并返回该项的描述。它应该有一个构造函数。构造函数可以采用您选择的许多参数,但必须设置所有实例变量。

•它应包含每个实例变量的访问器方法。

•它不应包含任何不必要的实例变量。任何不需要存储在类实例中的信息都应存储为本地变量。

以下是代码。 (不完整,因为我有点卡住。请检查我是否正确。如果没有,那么请纠正我。)

public class Pets {

    public static void main(String[] args) {


        System.out.print (Pets.toString()); //toString
    }

    String color, pattern;
    int age, size;
    double price;

    Pets (String color, String pattern, int age, int size, double price){
        this.color = color;
        this.pattern = pattern;
        age = age;
        size = size;
        price = price;
    }
    public String toString(){     //I don't get this part..
        String description;
        description = "red";
        return description;
    }
    public String getColor(){
        return color;           
    }

    public String getPattern(){
        return pattern;
    }

    public int age(){
        return age;
    }

    public int size(){
        return size;
    }

    public double price(){
        return price;
    }
}

3 个答案:

答案 0 :(得分:0)

你的main方法试图调用静态方法toString(),但你的toString()方法不是静态的(因为它不应该)。

出于测试目的,您的主要方法应如下所示:

public static void main(String[] args) {
    Pets pet = new Pets("red", "plain", 1, 2, 10.25);
    System.out.println(pet.toString());
}

在你的构造函数中:

Pets (String color, String pattern, int age, int size, double price){
    this.color = color;
    this.pattern = pattern;
    this.age = age;
    this.size = size;
    this.price = price;
}

您的toString()方法名称中包含拼写错误。它应该返回实例属性的描述(不是实际的描述字段)。例如:

public String toString() {
    StringBuilder description = new StringBuilder("Color: ")
            .append(color)
            .append(", Pattern: ")
            .append(pattern)
            .append(", Age: ")
            .append(age)
            .append(", Size: ")
            .append(size)
            .append(", Price: ")
            .append(price);
    return description.toString();
}

你的吸气者应该从get:

开始
public int getAge(){
    return age;
}

public int getSize(){
    return size;
}

public double getPrice(){
    return price;
}

修改

在OPs请求中:

替代toString()方法,它使用字符串连接(坏)并且没有特殊格式:

public String toString() {
    return "Color: " + color + ", Pattern: " + pattern + ", Age: " + age + ", Size: " + size + ", Price: " + price;
}

答案 1 :(得分:0)

你写的地方

    age = age;
    size = size;
    price = price;

这实际上不是设置实例变量。你应该继续写作

   this.age = age
   // etc...

当你写this时,它告诉Java你是指实例变量,而不是局部变量

答案 2 :(得分:0)

调用main方法时,Java不会为您创建Pets的实例。但是其余代码适用于Pets对象,因此您需要在main中的某个位置创建一个代码。因此,而不是:

public static void main(String[] args) {
    System.out.print (Pets.toString()); //toString
}

它会像

public static void main(String[] args) {
    Pets pet = new Pets(........);      // creates an instance; you'll need to supply
                                        // the arguments
    System.out.print (pet.toString());  // calls toString on this instance
}

这将超过“无法生成静态引用”错误,但还有其他问题中描述的其他问题。