【问题标题】:Set value based on all conditions inside FOR loop根据 FOR 循环内的所有条件设置值
【发布时间】:2016-03-30 10:18:09
【问题描述】:

只有在所有条件都设置好后,我才需要设置布尔值。我正在努力在 for 循环中设置布尔值。根据我的代码,该值根据列表中的最后一项设置为 TRUE/FALSE。但是只有在设置了所有条件时才应该设置该值。有人可以帮我解决这个问题吗?

boolean validateName(List<String> NameList, Name name) {
        boolean value = false;
        for (String name : NameList) {
            name.hasName(name);
            value = true;
        }
        return value;
}

【问题讨论】:

  • 你为什么不使用条件块?
  • 不会是两个同名变量name之间的冲突吗?你的程序编译了吗?另外,您的问题不清楚何时设置所有条件。这些条件是什么?
  • 使用 if (nameList.contains(name)) 我看不到使用循环的意义。

标签: java


【解决方案1】:

试试这个:

boolean validateName(List<String> nameList, Name name) {
   for (String nameTmp : nameList) {
      if(!nameTmp.equals(name))
         return false;
   }
   return true;
}

【讨论】:

    【解决方案2】:

    只要不满足一个条件就返回false

    boolean validateName(List<String> NameList, Name aName) {
            boolean value = false;
            for (String name : NameList) {
                if(!aName.hasName(name))
                  return false;
    
            }
            return true;
    }
    

    【讨论】:

    • 哦,是的,我将更新为一个可编译的示例。
    • 谢谢,它会工作的。我们能避免吗!运营商在这里?还有其他选择吗?
    • @ezhil 为什么你更喜欢使用 for 循环而不是条件块?
    • 我想避免条件块,因为 if 条件块将来会增加。我假设条件会超过 15 个。这就是我选择这种方法的原因。
    • @ezhil:也许 RishiKesh Pathak 的评论会有所帮助。假设 Name 有一个唯一的名称 String 和一个像 String getName() 这样的方法,你可以做 NameList.contains(name.getName()) 并从你的方法返回这个结果。
    【解决方案3】:

    如果您使用的是 Java 8,请尝试以下操作:

    return NameList.stream().allMatch(element -> element.equals(name))
    

    【讨论】:

      猜你喜欢
      • 2017-03-17
      • 2014-09-03
      • 1970-01-01
      • 2020-06-27
      • 2016-08-19
      • 1970-01-01
      • 2017-05-04
      • 2018-07-16
      • 1970-01-01
      相关资源
      最近更新 更多