链表始终执行else语句

时间:2018-05-06 13:04:46

标签: java

所以我有这个代码

private void customerRemove(){
   customers = new LinkedList <Customer>();
   customers.add(new Customer(1, "John", 20));
   customers.add(new Customer(2, "Mike", 21));
   customers.add(new Customer(3, "Harry", 22));
    System.out.println("\nRemoving a customer.");
   System.out.print("Enter a customer ID: ");
   int rmvId = In.nextInt();
   for (Customer rmvCustomer:customers){
        if(rmvCustomer.getID()== rmvId){
          customers.remove(rmvCustomer);
            System.out.println("Customer removed.");
            System.out.println(" ");
           break;             
    }
        else{
            System.out.println("That customer does not exist.\n");
            break;

        }
   }}

当我打电话给这个方法时。始终会执行else语句,为什么会这样,我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:5)

你的for循环只是迭代一次。如果找到客户,它将被删除。如果没有找到,它将转到else块并中断循环,因此它不会检查链表中的其他元素。

   for (Customer rmvCustomer:customers){
        if(rmvCustomer.getID()== rmvId){
          customers.remove(rmvCustomer);
            System.out.println("Customer removed.");
            System.out.println(" ");
           return;             
       }
    }

    System.out.println("That customer does not exist.\n");
   }

答案 1 :(得分:0)

else循环中不需要for部分。 在您的情况下,您还没有等到迭代所有Customers,然后在屏幕上显示找不到Id

如果boolean found匹配,您可以将true变量设置为Id。如果未找到匹配项,则使用相同的found变量将其打印出来。 更新您的代码如下:

private void customerRemove() {
    customers = new LinkedList<Customer>();
    customers.add(new Customer(1, "John", 20));
    customers.add(new Customer(2, "Mike", 21));
    customers.add(new Customer(3, "Harry", 22));
    System.out.println("\nRemoving a customer.");
    System.out.print("Enter a customer ID: ");
    int rmvId = In.nextInt();

    boolean found=false;
    for (Customer rmvCustomer : customers) {
        if (rmvCustomer.getID() == rmvId) {
            customers.remove(rmvCustomer);
            System.out.println("Customer removed.");
            System.out.println(" ")
            found=true;
            break;
        }
    }
    if(!found)
     System.out.println("That customer does not exist.\n");
}