【问题标题】:Simplifying If-conditions [duplicate]简化 If 条件
【发布时间】:2017-11-05 23:43:52
【问题描述】:

有没有办法简化:

if(a == b || a == o || a == j || a ==....)
{
    ...
}

我想我可以做类似的事情

if( a == (b || o || j || ...))
{
     ...
}

但结果证明语法不正确

【问题讨论】:

  • 没有这么简单的事情。您可以将您的值放入列表中,然后使用contains()
  • 如果 b、o、j 等是常量,则可以创建一个 Set (java 9:​​ Set.of(b, o, j).contains(a).Arrays.asList(b, o, j).contains(a) 如果它们是变量,那么逻辑很臭。
  • 不幸的是,您不能像那样简化if。如果 switch 语句在您的情况下有意义,您可以将多个 cases 放在一起。否则,基于集合的建议可能最有意义。

标签: java if-statement simplify


【解决方案1】:

创建一个方法来获取a 的值和其他元素的varargs,然后您可以流过这些元素并检查是否有任何等于a 的值。

一个例子:

public boolean anyMatch(int a, int... values){
      return Arrays.stream(values).anyMatch(e -> e == a);
}

那么你可以这样称呼它:

if(anyMatch(a, o, j, b)){ ... };

【讨论】:

  • java 8 优点的使用方式:)
【解决方案2】:

我想你的变量是整数。

List<Integer> values = Arrays.asList(b, o, j);
if (values.contains(a)){
...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    相关资源
    最近更新 更多