【问题标题】:alternative way to compare if three ints are equal比较三个整数是否相等的替代方法
【发布时间】:2013-12-30 06:18:04
【问题描述】:
int a = 10;
int b = 10;
int c = 10;

我试图找出是否有替代方法来比较三个整数或任何内容是否相等。

我现在的做法是

if( (a == b) && (a == c) && (b == c)){

}

我想知道是否有其他更简洁的方法可以做到这一点。

【问题讨论】:

  • 对于许多这样的整数,您可能会使用一些集合实现,并在添加它们后检查元素的数量

标签: java operators conditional-statements


【解决方案1】:

平等是可传递的;你不需要最后的比较b == c。如果a == ba == c,那么b == c

试试

if ((a == b) && (a == c)){

【讨论】:

    【解决方案2】:

    如果您只需要知道三个是否相等,那么您可以使用:

    if ((a==b) && (b==c)) {
    
    }
    

    【讨论】:

      【解决方案3】:

      替代变体:

      int t1 = a-b;
      int t2 = c-b;
      if ( (t1|t2) == 0 ) // both are equal
      

      【讨论】:

      • 这并不比这里的其他答案更紧凑,而且肯定不太清楚;)
      • @OliCharlesworth 不清楚,但它是“替代品”:) 也可以更快一点(有时,至少对于 c/c++)
      • 你是说0/0 等于0 吗?
      • @PM77-1:不,但0|0 确实如此。
      • if (0 == ((a - b) | (b - c))) 是等价的,更紧凑,但更不清晰。 (编辑因为没有看到 Java 标签)
      【解决方案4】:
      public static int equal(int a, int b, int c) {
          int count = 0;
      
          if (a==b && b==c) { 
            count = 3; 
          } else if ((a==b && b!=c) || (a==c && a!=b)) { 
            count = 2; 
          }
      
          return count;
      }
      

      【讨论】:

      • 请在您的答案中添加一些解释,以便其他人可以从中学习
      • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。考虑阅读How to Answeredit 你的答案以改进它。
      猜你喜欢
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 2023-03-31
      • 2011-05-08
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多