-2

我正在尝试创建客户。我正在尝试将每个用户输入添加到 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();
}

}

在此处输入图像描述

4

4 回答 4

4

覆盖对象toString的方法Customer

当前一个是默认实现。

以防您想知道@5c694a18 的含义:它是Customer对象哈希码的无符号十六进制表示。

于 2013-01-21T18:45:36.623 回答
2

您正在尝试打印一个对象,所以它会转到它的toString()方法。toString()您可能希望通过覆盖从Object继承的方法来实现自己的方法。

就像是:

@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())

于 2013-01-21T18:46:04.843 回答
1

由于您没有在 Customer 类中覆盖 toString,因此会调用Objects 的 toString ,这将返回NameOfTheClass +"@" +SomeHexNumber.

 return getClass().getName() + "@" + Integer.toHexString(hashCode());

覆盖toString() methodCustomer class使其打印适当的数据。如下所示:

public String toString() {
return this.firstName+" " + this.lastName ;
}
于 2013-01-21T18:46:00.663 回答
1

Customer是一个对象,您需要重写 toString() 方法以输出您想要的关于该对象的值。

于 2013-01-21T18:46:05.390 回答