缩写代码的单词形式

Cal*_*lum 1 java

我有一个程序,我试图理解,但有一个我不明白的缩写代码或代码.代码是

    double xDistance = x1 - x2 >= 0 ? x1 - x2 : x2 - x1;
    double yDistance = y1 - y2 >= 0 ? y1 - y2 : y2 - y1;
Run Code Online (Sandbox Code Playgroud)

我在编程书籍中读到了?:是if ... then的缩写形式但是我把这些单词放在哪里,因为每次我插入或替换一些代码我都会遇到语法错误.

还有不止一种方法来编写以下代码行

(xDistance <= (w1 + w2) / 2 && yDistance <= (h1 + h2) / 2)
Run Code Online (Sandbox Code Playgroud)

最好替换&&运算符

提前感谢您提供的任何帮助.

Aus*_*oke 5

条件运算符 ? :是速记if-else和作品像这样:

(condition) ? (return this if condition true) : (return this if condition false)
Run Code Online (Sandbox Code Playgroud)


因此

double xDistance = x1 - x2 >= 0 ? x1 - x2 : x2 - x1;
Run Code Online (Sandbox Code Playgroud)

相当于:

if (x1 - x2 >= 0)
   xDistance = x1 - x2;
else
   xDistance = x2 - x1;
Run Code Online (Sandbox Code Playgroud)


第二行:

double yDistance = y1 - y2 >= 0 ? y1 - y2 : y2 - y1;
Run Code Online (Sandbox Code Playgroud)

是一回事,等同于:

if (y1 - y2 >= 0)
   yDistance = y1 - y2;
else
   yDistance = y2 - y1;
Run Code Online (Sandbox Code Playgroud)


这是在和中存储绝对值(即距离而不是位移).也可以替换等xDistanceyDistanceMath.abs(x1 - x2)


为什么要&&在下面更换操作员?

(xDistance <= (w1 + w2) / 2 && yDistance <= (h1 + h2) / 2)
Run Code Online (Sandbox Code Playgroud)

如果你真的不得不这样做(假设这个陈述属于一个 if 陈述):

if (xDistance <= (w1 + w2) / 2)
   if (yDistance <= (h1 + h2) / 2)
      // do something
Run Code Online (Sandbox Code Playgroud)

编辑:正如大卫在评论中提到的,&&只是一个逻辑 AND.即.for X && Y表达式为TRUE,如果两者都X为TRUE且Y为TRUE.

因此,您可以利用短路,如果第一个条件(X)为FALSE,则程序中没有任何一点评估第二个(Y),因为表达式永远不会为TRUE.