好的,我不知道如果我正确编写了代码请检查。所以我为一个销售一种商品的商店创建了软件。我班上的每个实例都应该是我商店出售的商品。
例如,如果我的商店销售领带,我会设计一个领带类:
类领带{...
我的类必须有五个实例变量,包括至少一个整数类型,至少一个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;
}
}
答案 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
}
这将超过“无法生成静态引用”错误,但还有其他问题中描述的其他问题。