如何解决使用构造函数的基本打印输出问题
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
初学者在这里。谢谢。
解决方法
- 您在构造函数中什么也不做。
- 如果在不覆盖toString()的情况下打印此对象,则将获得十六进制表示形式。 做下面的事情
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 + "]";
}
}
,
嗨,这是因为您永远不会在构造函数中评估输入变量。尝试定义一些类变量(私有字符串乘积;私有int计数;私有双倍价格),然后在构造函数中将输入分配给类varabiables。比为类变量创建getter和setter方法并重写toString()方法(此操作可以轻松地委派给您的IDE,即Eclipse或Intellij)。 重新运行程序,看看会发生什么。
,您需要为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之类的库,只需添加相应的批注,即可使所有这些工作变得非常容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。