我正在努力创建一个客户。我正在尝试在arrayList中添加每个用户输入,并将其输出到最后。但是,我的输出给了我一些记忆位置。有人可以为此提供一些亮点吗?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter First Name: ");
String firstName = input.nextLine();
System.out.println("Enter Last Name: ");
String lastName = input.nextLine();
System.out.println("Enter Home Address: ");
String homeAddress = input.nextLine();
Customer cus = new Customer(firstName, lastName, homeAddress);
System.out.println("\nWelcome: ");
System.out.print(cus.getFirstName() + cus.getLastName());
System.out.println("\n Your Shipping Address: ");
System.out.print(cus.getHomeShippingAddress());
List<Customer> customer = new ArrayList<Customer>();
customer.add(cus);
// Output the list contents
printList(customer);
}
public static void printList(List<Customer> list) {
System.out.println("Customers: ");
for (Customer customer : list) {
System.out.printf("%s", customer);
}
System.out.println();
}
}
答案 0 :(得分:4)
覆盖toString
对象的Customer
方法。
当前的是默认实现。
万一你想知道@ 5c694a18是什么意思:它是你的Customer
对象的哈希码的无符号十六进制表示。
答案 1 :(得分:2)
您正在尝试打印对象,因此它转到toString()
方法。您可能希望通过覆盖从Object继承的方法来实现自己的toString()
方法。
类似的东西:
@Override
public String toString() {
StringBuilder result = new StringBuilder();
//build your string here.
//Perhaps by appending the customer's first and last name?
return result.toString();
}
您目前看到的,继承自Object的内容是:
getClass()。getName()+'@'+ Integer.toHexString(hashCode())
答案 2 :(得分:1)
当您在Customer类中覆盖toString 时,会调用对象的toString ,这将返回NameOfTheClass +"@" +SomeHexNumber.
return getClass().getName() + "@" + Integer.toHexString(hashCode());
覆盖toString() method
中的Customer class
,以便打印相应的数据。
如下所示:
public String toString() {
return this.firstName+" " + this.lastName ;
}
答案 3 :(得分:1)
Customer
是一个对象,您需要覆盖toString()方法以输出您想要该对象的值。