3

我已尝试尽可能多地进行搜索,但是当您是初学者时,这有点困难。无论如何,我正在尝试学习 Java,但我遇到了一个问题,即“var1 可以大于 var2 或 var3,但不能同时大于两者。我应该用布尔值回答。

e = var1 > var2 || var1 > var3 && var1 < var2 + var3;

如果我这样做,我最终只会做 var2 和 var3 的总和。我怎么喜欢

var1 < var2 AND var3;
4

7 回答 7

7

您可以使用异或运算符:

(var1 > var2) ^ (var1 > var3)

A ^ Btrue当且仅当其中一个AB(但不是两者)是true

ABA^B
---------
0 0 0
0 1 1
1 0 1
1 1 0
于 2013-07-19T12:54:38.110 回答
4

如果var1“can”大于var2,并且“can”大于var3,但不能同时大于 ,答案很简单。

boolean response = !(var1>var2 && var1>var3)
boolean response = (var1<=var2 || var1<=var3)
于 2013-07-19T12:54:45.147 回答
1

确定 var2 和 var3 中较大的那个是什么,然后检查 var1 是否大于那个?如果返回 true,您已经知道它比两者都大。(e:这至少是一种方式,可能不是最好的。)

于 2013-07-19T12:55:08.220 回答
0

尝试这个:

if (var1 > var2 ||var1 > var3 && !(var1 < (var2 + var3) )){
   Assert.assertTrue(true);
}
于 2013-07-19T12:53:49.587 回答
0

Yuo可以这样检查:

e = (var1 > var2 ) || (var1 > var3) && (var1 < var2) + var3;
于 2013-07-19T12:54:37.327 回答
0

通常,您需要考虑运算符的关联性(通常在 Java 中从左到右)以及运算符优先级(加法之前的乘法等)

var1 可以大于 var2 或 var3 但不能同时大于两者

(var1 > var2 || var1 > var3) && !(var1 > var2 && var1 > var3)

或者,您可以按照需要最少代码的其他答案之一中的建议使用独占或运算符。

于 2013-07-19T12:58:04.337 回答
0

XOR 在 java 中不是开箱即用的,您应该测试两种情况 if((x1>x2 && x1<xx3)||(x1<x2 && x1>x3))

于 2013-07-19T12:53:28.587 回答