问:我的代码有什么问题?
呼叫中心
进口 java.util.ArrayDeque ;
导入 java.util.Queue ;
公共类CallCenter {队列< CustomerSupportRep > mSupportReps ; 公共呼叫中心(队列< CustomerSupportRep >队列){ mSupportReps =队列; } public void acceptCustomer (客户客户){ CustomerSupportRep csr = new CustomerSupportRep (
“ Eirin” );
mSupportReps 。加(csr ); / ******************************************** * TODO(1) *等待直到队列中有可用的代表。 *虽然没有可用的,但playHoldMusic *提示:虽然我们过去用来 读取文件的Assignmentcheck循环语法似乎非常相似 ************************ ******************** * / ,而((CSR = mSupportReps 。轮询())==空){ playHoldMusic (); } //mSupportReps.poll();
/ ********************************************
* TODO(2)
*在分配代表之后,请调用
*协助方法并传递客户
******************************** ************
* /
csr 。协助(客户);/ ******************************************** * TODO(3) *由于客户支持代表是在 *协助下完成的,因此请将他们放回队列中。 ************************************************ * / mSupportReps 。加(csr ); } public void playHoldMusic
() {
系统。出来。println (“ Smooooooth Operator .....” ); } }
CustomerSupportRep.java
导入 java.util.List ;
导入 java.util.ArrayList ;
公共类CustomerSupportRep { private String mName ; 私人名单<客户> mAssistedCustomers ; public CustomerSupportRep (字符串名称){ mName =名称;mAssistedCustomers =新的ArrayList <客户>(); }公共无效协助(客户客户
) {
系统。出来。的printf (“%s您好,我的名字是%S,我怎么能帮助您%N” ,顾客。的getName (),MNAME ); 系统。出来。println (“ ...” ); 系统。出来。println (“还有什么可以帮助您的吗?” );mAssistedCustomers 。添加(客户); }公开列表<客户> getAssistedCustomers
() {
返回mAssistedCustomers ;} }
客户.java
公共 类 Customer {
私有字符串mName ; 公共客户(字符串名称){ mName =名称; } public String getName (){ return mName ; } }
答:我将解释发生了什么,希望您能理解。
在acceptCustomer()方法的最顶端,我们要检查队列中是否有客户支持代表。正如您在代码中看到的那样,要做的第一件事是创建一个新的客户支持代表,然后将其添加到队列中。这不是您期望/想要做的挑战。
我们不会成为创建新的客户支持代表或其他人员的人。我们的代码着重于确保队列中有人,然后处理队列中是否有人的情况。我们仅在确定队列中有客户代表之后才初始化该csr变量。
如您所见,您手动添加了一个客户代表,并将其分配给了csr。csr应该通过poll()分配
这是第一部分的样子:
while(mSupportReps.poll()== null){
playHoldMusic();
}
如您所见,我们直接引用队列,并检查队列中是否有人。如果为空,则播放音乐。
现在,如果我们的客户代表队列中有一个人,那么我们将他们从队列中拉出,并将其分配给我们的csr变量,如下所示,然后在此之后调用aid()方法:
csr = mSupportReps.poll();
csr.assist(客户);
其余的代码则正确地将其记录下来。