public class Store {
public Store(String product, int count, double price) {
}
public static void main(String[] args) {
Store cookieShop = new Store("cookies", 12, 3.75);
System.out.println(cookieShop);
}
}
我似乎无法打印出我分配给 cookieShop 的值。
预期输出:
cookies123.75
输出:
Store @ 2aae9190
初学者在这里。谢谢。
答案 0 :(得分:1)
public class Store {
String product;
int count;
double price;
public Store(String product, int count, double price) {
this.product=product;
this.count=count;
this.price=price;
}
public static void main(String[] args) {
Store cookieShop = new Store("cookies", 12, 3.75);
System.out.println(cookieShop);
}
@Override
public String toString() {
return "Store [product=" + product + ", count=" + count + ", price=" + price + "]";
}
}
答案 1 :(得分:0)
嗨,这是因为您永远不会在构造函数中评估输入变量。尝试定义一些类变量(私有字符串乘积;私有int计数;私有双倍价格),然后在构造函数中将输入分配给类varabiables。比为类变量创建getter和setter方法并重写toString()方法(此操作可以轻松地委派给您的IDE,即Eclipse或Intellij)。 重新运行程序,看看会发生什么。
答案 2 :(得分:-2)
您需要为Store类定义一个toString方法。默认情况下,如果未在您的类中覆盖所有对象,则所有对象都使用java.lang.Object(https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--)类中的toString方法,该方法仅显示类的名称和十六进制表示形式:
getClass().getName() + '@' + Integer.toHexString(hashCode())
尝试类似的操作(使用您自己的字段名称):
@Override
public String toString() {
return name + count + price;
}
还考虑使用lombok之类的库,只需添加相应的批注,即可使所有这些工作变得非常容易。