Java 链表总是执行else语句

Java 链表总是执行else语句,java,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.print

我有这个密码

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;

        }
   }}
private void customerRemove(){
客户=新的LinkedList();
添加(新客户(1,“John”,20));
添加(新客户(2,“Mike”,21));
添加(新客户(3,“Harry”,22));
System.out.println(“\n删除客户”);
System.out.print(“输入客户ID:”);
int rmvId=In.nextInt();
用于(客户RMV客户:客户){
if(rmvCustomer.getID()==rmvId){
客户。删除(RMV客户);
System.out.println(“客户已删除”);
System.out.println(“”);
打破
}
否则{
System.out.println(“该客户不存在。\n”);
打破
}
}}

当我调用这个方法时。Always else语句首先执行,为什么会这样?我如何解决这个问题?

您的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");
   }

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");
   }

for
循环中不需要
else
部件。 在您的情况下,在屏幕上显示未找到
Id
之前,您不会等待迭代所有
客户

如果
Id
匹配,可以保留一个
boolean found
变量,将其设置为
true
。如果未找到匹配项,则使用相同的
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");
}
private void customerRemove(){
客户=新的LinkedList();
添加(新客户(1,“John”,20));
添加(新客户(2,“Mike”,21));
添加(新客户(3,“Harry”,22));
System.out.println(“\n删除客户”);
System.out.print(“输入客户ID:”);
int rmvId=In.nextInt();
布尔值=false;
用于(客户RMV客户:客户){
if(rmvCustomer.getID()==rmvId){
客户。删除(RMV客户);
System.out.println(“客户已删除”);
System.out.println(“”)
发现=真;
打破
}
}
如果(!找到)
System.out.println(“该客户不存在。\n”);
}

对于
循环,
中不需要
其他
部分。 在您的情况下,在屏幕上显示未找到
Id
之前,您不会等待迭代所有
客户

如果
Id
匹配,可以保留一个
boolean found
变量,将其设置为
true
。如果未找到匹配项,则使用相同的
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");
}
private void customerRemove(){
客户=新的LinkedList();
添加(新客户(1,“John”,20));
添加(新客户(2,“Mike”,21));
添加(新客户(3,“Harry”,22));
System.out.println(“\n删除客户”);
System.out.print(“输入客户ID:”);
int rmvId=In.nextInt();
布尔值=false;
用于(客户RMV客户:客户){
if(rmvCustomer.getID()==rmvId){
客户。删除(RMV客户);
System.out.println(“客户已删除”);
System.out.println(“”)
发现=真;
打破
}
}
如果(!找到)
System.out.println(“该客户不存在。\n”);
}

首先执行是什么意思?请阅读有关如何调试代码的提示。@RyanJ当我将id 2作为客户id时,我得到的输出是客户不存在。@Samrat看到Sandesh Gupta的回答,这是正确的。首先执行是什么意思?请阅读有关如何调试代码的提示。@RyanJ当我将id 2作为客户id时,我得到的结果是客户不存在。@Samrat看到Sandesh Gupta的答案,它是正确的。