我正在制作电话簿中的条目链接列表。但是,我正在努力找出一个完整的删除方法。我尝试检测到我尝试删除的条目不在列表中,并且未找到“未找到条目”的条目。信息。我使用列表界面进行链接列表。这是目前为止的删除方法。现在我试图覆盖最后一个节点"最后一个if语句中的情况。但它不起作用。如果我没有使用列表界面,我想我可以使用getLast()方法并将其与我当前所在的条目进行比较,但我更喜欢这样做,并找出另一种方法解决这个问题。有任何想法吗 ? - 编辑它不工作的原因是如果我删除列表中的最后一个条目,即使该条目作为最后一个节点并且已成功删除,它也会打印出条目未找到消息
public void deleteEntry(String number) {
ListIterator<Entry> i = phoneBook.listIterator();
while(i.hasNext()){
Entry e = i.next();
if(e.getNumber().equals(number)){
i.remove();
break;
}
}
if(phoneBook.size() != 0 && (!(i.hasNext()))){
System.out.println("Entry not found");
}
}
答案 0 :(得分:2)
将break;
语句替换为return;
。
答案 1 :(得分:2)
你可以这样做:
public void deleteEntry(String number) {
int size = phoneBook.size();
for (ListIterator<Entry> i = phoneBook.listIterator(); i.hasNext(); ) {
Entry e = i.next();
if (e.getNumber().equals(number)) {
i.remove();
break;
}
}
if (phoneBook.size() == size) {
System.out.println("Entry not found");
}
}
答案 2 :(得分:1)
public void deleteEntry(String number) {
ListIterator<Entry> i = phoneBook.listIterator();
while(i.hasNext()){
Entry e = i.next();
if(e.getNumber().equals(number)){
i.remove();
return;
}
}
System.out.println("Entry not found");
}
但最好将返回类型更改为boolean
并在找到数字后立即返回true
,否则false
最后
答案 3 :(得分:0)
public void deleteEntry(String number) {
ListIterator<Entry> i = phoneBook.listIterator();
boolean found = false;
while(i.hasNext()){
Entry e = i.next();
if(e.getNumber().equals(number)){
if(!found)
found = true;
i.remove();
break;
}
}
if(!found){
System.out.println("Entry not found");
}
}