Java比较Vertex Lexicographically

时间:2013-11-26 20:21:47

标签: java

我们正在进行一项任务,比较不同边缘的重量,返回真或假,我只需要有人在这里解释老师的代码

boolean thisTest;

int small = (thisTest = u < v) ? u : v,
big = (thisTest) ? v : u;

有人可以在这里解释一下这个操作吗?

由于

1 个答案:

答案 0 :(得分:5)

相当于:

if u < v 
   thisTest = true
else 
    thisTest = false

if(thisTest)
  small = u;
else
  small = v;

if(thisTest)
  big = v;
else
  big = u;

如果仔细观察:

int small = (thisTest = u < v) ? u : v;
首先评估

(thisTest = u < v)。因此,如果u < vthisTest = true其他thisTest = false

所以你有:

boolean thisTest = u < v;
int small = thisTest ? u : v; //ternary operator, if thisTest is true then small = u else small = v
big = thisTest ? v : u; //same reason, if thisTest is true, then big = v else big = u

总结一下,small将包含uv之间的最小值,big将包含最大值。如果u == vbigsmall具有相同的值。

您可以获得更多信息here

  

另一个条件运算符是?:,可以被认为是   if-then-else语句的简写(在控制流程中讨论)   本课的语句部分)。这个运算符也称为   三元运算符,因为它使用三个操作数。