2013-07-19 100 views
3

我尽力搜索尽可能多的东西,但是当你是初学者的时候这很难。反正我试着去学习Java和IM停留在一个问题,说:“VAR1可以比VAR2和VAR3但不能两者都大。和IM应该有一个布尔值来回答。少于两个变量

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

如果我这样做,我结束了它只是在做VAR2和VAR3的总和。我该怎么样

var1 < var2 AND var3; 
+2

您需要添加一些括号。 – Kayaman

+1

大概“不是两个”在这里并不意味着“不超过总和” – tttppp

+0

是返回val一个'布尔'(类的实例)或'布尔'(主要数据类型)? – akf

回答

7

可以使用exclusive-OR操作:

(var1 > var2)^(var1 > var3) 

A^Btrue当且仅当AB(但不能同时)是true

 
A B A^B 
--------- 
0 0 0 
0 1 1 
1 0 1 
1 1 0 
+1

也被称为'!=' – Nicolas

+0

谢谢!这工作完美。奇怪的是,我没有看到它的任何地方。 – user2599508

+0

@ user2599508这不是最常见的操作员之一。 – Fabinout

0

XOR是不是出在Java中框 你应该同时测试情况 的IF((X1> X2 & & X1 < xx3)||(x1 < x2 & & X1> X3))

0

试试这个:

if (var1 > var2 ||var1 > var3 && !(var1 < (var2 + var3))){ 
    Assert.assertTrue(true); 
} 
0

宥可以检查这样的:

e = (var1 > var2) || (var1 > var3) && (var1 < var2) + var3; 
4

如果var1“可以”比var2更大,而且比var3“可以”做大,但不能同时,答案是非常简单的。

boolean response = !(var1>var2 && var1>var3) 
boolean response = (var1<=var2 || var1<=var3) 
+0

@afsantos感谢编辑,我不习惯SO的格式。 – Fabinout

1

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

0

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

VAR1可以比VAR2和VAR3但不能同时

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

更大或者你可以使用异或运算符,在需要的最少的代码,其他的答案中的一个建议。