比较2对整数

时间:2014-11-14 15:33:38

标签: java math integer comparison

我有两个整数,我们称之为xy。我想将这些与我的其他两个整数ab进行比较。我想检查 xy是否等于a,如果另一个等于b,我可以&# 39;想到一个简短的方法。

这是我到目前为止所获得的代码 - 是否有更短的方式?

if ((firstClickItem.getId() == 590 && secondClickItem.getId() == 1511) || (secondClickItem.getId() == 590 && firstClickItem.getId() == 1511)) {

5 个答案:

答案 0 :(得分:2)

你有什么好。
其他几种做法是

if((x+y)==(a+b) && Math.abs(x-y)==Math.abs(a-b)){ 

if(Math.min(x,y)==Math.min(a,b) && Math.max(x,y)==Math.max(a,b)){ 

答案 1 :(得分:2)

您可以使用xor运算符

boolean xTest;

if( (xTest=x==a)^(y==a) ? xTest ? y==b : x==b : false )

这将:

  1. test x == a zh_cn将结果存储在xTest
  2. 执行x==a xor y==a。如果false,请返回false。如果true,请执行3
  3. 如果x==atrue,请测试y==b。如果x==afalse,请测试x==b

答案 2 :(得分:1)

如果你真的希望它简短,这是一个精确的方法:

// check if either x or y is equal to a and if the other one is equal to b
int op = (x == a ? (y == b ? 1 : 0) : ((y == a) ? (x == b ? 1 : 0) : 0));

您也可以将上述条件放在if语句中。就个人而言,我认为这个表达式并不是真的可读,所以你可能也想考虑那个部分。

答案 3 :(得分:0)

boolean valid1 = firstClickItem.getId() == 590 && secondClickItem.getId() == 1511;
boolean valid2 = secondClickItem.getId() == 590 && firstClickItem.getId() == 1511;

if (valid1 || valid2){

答案 4 :(得分:0)

嗯,我想你可以使用集合比较:

public class MyTest {
   private final static Set<Integer> VALUES = new HashSet<>(Arrays.asList(590, 1511));

   public static void main(String[] args) {

       if(VALUES.equals(new HashSet<>(Arrays.asList(getVal1(), getVal2())))) {
           System.out.println("Equal");
       } else {
           System.out.println("Not Equal");
       }
    }

    // Either way round will work.
    public static int getVal1() { return 590; }
    public static int getVal2() { return 1511; }
}