【问题标题】:break does not stop the for loopbreak 不会停止 for 循环
【发布时间】:2018-01-05 11:12:33
【问题描述】:

我的代码有问题,我想在 Firebase 中找到匹配项,删除该项目并停止查找匹配项,但它没有,结果是它删除了所有元素

for(DataSnapshot dataSnapshot2: dataSnapshot.getChildren()) {
    Product product = dataSnapshot2.getValue(Product.class);
    String product_name = producto.getNombre();
    String key = dataSnapshot2.getKey();

    if(spinner_product.getSelectedItem().toString().equals(product_name)) {
        bbdd.child(key).removeValue();
        break;
    }
}

【问题讨论】:

  • 首先检查天气是否在 if 语句中。我确定它不会进入里面。
  • 在for循环内添加断点
  • 或者他有某种外循环。
  • @RanjanDas 抱歉,天气?
  • 没有足够的信息来回答这个问题。添加有关代码的更多详细信息,例如bbdd 是什么,或者可能有其他代码部分影响结果

标签: java android foreach


【解决方案1】:

就像@Lozenzo 的回答一样,但是在循环中声明一个标志并不是最好的解决方案,并且请注意循环不会停止,直到它检查 dataSnapshot.getChildren() 中的所有元素!

尝试在循环之前声明标志并将其添加到循环条件中。你可能会发现 do while 循环类型对这个任务很有用。

【讨论】:

    【解决方案2】:

    编辑:正如@Rafal 所说,在循环外实例化布尔值显然更好!

    永远不要使用break,因为它非常不稳定。

    即使do{}while(); 循环更好,你也可以试试这个:

    实例化一个布尔值:

    Boolean flag = false;
    for(DataSnapshot dataSnapshot2: dataSnapshot.getChildren()) {
        Product product = dataSnapshot2.getValue(Product.class);
        String product_name = producto.getNombre();
        String key = dataSnapshot2.getKey();
    
        if(flag == false && spinner_product.getSelectedItem().toString().equals(product_name)) {
            bbdd.child(key).removeValue();
            flag=true;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多