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的答案,它是正确的。