【问题标题】:Creating an instance of a class and adding it to a map. Java创建一个类的实例并将其添加到地图中。爪哇
【发布时间】:2020-03-23 13:11:21
【问题描述】:

好吧,假设我有两节课。一个顾客和一个商店。

  // In the class customer, I have 3 instance variables. 
  private String aFullName; 
  private String address;
  private char age; 

 // Then in the constructor, I have initialised these too:
 this.aFullName = fullName; 
 this.address = anAddress;
 this.age = anAge;

 //In my second class then, the shop...
 //I only have one variable where I've referenced a map: 
 private Map<String, Customer> customers;

//My constructor:
public Shop()
{
super();
customers = new HashMap<>()
}

我的问题是:

在 shop 类中,我必须创建一个名为 addCustomer 的方法,该方法接受 4 个参数。它将首先创建一个客户实例,然后将其添加到我的名为 customers 的地图中。

参数不能改变,我的问题是当方法中的参数和客户类中的变量不同时,我对如何创建实例感到困惑

public void addCustomer(String memNo, String name, String address, char ageCat)
// where memNo is going to be the key.

如何创建实例并将其添加到客户引用的map中,以memNo为key?

然后,如果我正在测试这个方法,我应该能够将客户添加到地图,但使用这个方法 addCustomer

谢谢

【问题讨论】:

  • this.customers.put(memNo, new Customer(name,address,ageCat)) ?

标签: java class dictionary instance


【解决方案1】:

这可以通过简单地创建一个带有 4 个参数的方法 addCustomer 来完成,然后在该方法中实例化一个新的 Customer 对象并将其放入到带有相关的

public void addCustomer(String memNo, String name, String address, char ageCat) {
    customers.put(memNo, new Customer(name, address, ageCat);
}

【讨论】:

  • 非常感谢!有道理,我试图在 2 行单独的行中执行此操作,这就是它不起作用的原因。我试图做新客户(姓名,地址,ageCat)然后customers.put(memNo,Customer)!再次感谢
  • 没问题!
  • 我其实还有一个问题。我现在正在尝试打印地图。在客户类中,我有一个名为 public String toString() 的方法,类似于return (this.getName() + " " + this.getAddress() 等。我在商店类中的方法必须使用此方法 toString() 打印所有的客户。到目前为止,我有这个: public void printSkaters() { for (String eachCustomer :skers.keySet()) { System.out.println(toString()); } } 但我的结果显示如下:IceRink@67c8ebf IceRink@67c8ebf IceRink@67c8ebf 而不是用正确的名字等等?
  • @ShanNicole 你是在调用 System.out.println(toString()) 而你的意思是调用 eachCustomer.toString()。
  • 我试过了,它只打印他们的 memNo 而不是他们的姓名、地址和年龄。我只需要它来打印他们的姓名、地址和年龄,因为这是 toString() 方法中唯一的输出。我尝试了 customers.toString() 但它打印了整张地图三遍,包括 memNo :-(
猜你喜欢
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多