我有两个整数,我们称之为x
和y
。我想将这些与我的其他两个整数a
和b
进行比较。我想检查 x
或y
是否等于a
,如果另一个等于b
,我可以&# 39;想到一个简短的方法。
这是我到目前为止所获得的代码 - 是否有更短的方式?
if ((firstClickItem.getId() == 590 && secondClickItem.getId() == 1511)
|| (secondClickItem.getId() == 590 && firstClickItem.getId() == 1511)) {
答案 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 )
这将:
xTest
x==a
xor y==a
。如果false
,请返回false
。如果true
,请执行3 x==a
为true
,请测试y==b
。如果x==a
为false
,请测试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; }
}