我和我的朋友正在处理一个应该处理客户的程序。问题是我们需要检查一个以上的客户是否使用了电话号码。代码工作正常,直到我们达到4个具有相同编号的客户...然后用该编号打印出最后一个客户两次!我们无法弄清楚它有什么问题,如果你能快速关注我们的代码,那将是可爱的:)
//CASE 10: LISTA TELEFONNUMMER SOM FLER ÄN EN KUND HAR
public static void listaTelNr() {
String KtelefonNr;
String Knamn;
for(int y=0;y<TelefonNrLista.size();y++){
for(int x=y+1;x<TelefonNrLista.size();x++){
if (TelefonNrLista.get(y).getTelNr().equals(TelefonNrLista.get(x).getTelNr())){
KtelefonNr=TelefonNrLista.get(y).getTelNr();
Knamn= TelefonNrLista.get(y).getKundNamn();
SammaTelNr nySammaTelNr=new SammaTelNr(KtelefonNr,Knamn);
SammaTelNrLista.add(nySammaTelNr);
KtelefonNr=TelefonNrLista.get(x).getTelNr();
Knamn= TelefonNrLista.get(x).getKundNamn();
SammaTelNr nySammaTelNr2=new SammaTelNr(KtelefonNr,Knamn);
SammaTelNrLista.add(nySammaTelNr2);
}
}
}
for(int y=0;y<SammaTelNrLista.size();y++){
for(int x=y+1;x<SammaTelNrLista.size();x++){
if (SammaTelNrLista.get(y).getKundNamn().equals(SammaTelNrLista.get(x).getKundNamn())){
SammaTelNrLista.remove(x);
}
}
}
for(int i=0;i<SammaTelNrLista.size();i++){
System.out.println(SammaTelNrLista.get(i));
}
}
答案 0 :(得分:2)
将您的号码 - 客户关系存储在地图中,您的代码将更加清晰和快捷。
// Map<phoneNumber, customerList>
Map<String, List<Customer>> phoneNumberCustomersMap = new ...
答案 1 :(得分:0)
您的问题很可能与您尝试从for循环中的SammaTelNrLista列表中删除元素有关。要从集合中安全删除,您应该使用迭代器。
此外,如果删除过滤步骤,您可以使解决方案更有效率。将元素添加到SammaTelNrLista列表时,您可以检查名称是否已在列表中。只有在不存在的情况下才添加它。你可以使用地图。
答案 2 :(得分:0)
在第一个循环中:如果名称不相等且数字相等,则将数字添加到HashSet。之后循环遍历哈希集的条目并打印它们。