Java:数学条件

Mar*_*aux 1 java math conditional-statements

有一个简单的方法来做到这一点

if (1 < x && x < 3) { .... }
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

if (1 < x < 3) { .... }
Run Code Online (Sandbox Code Playgroud)

我知道上面的代码是错误的但......

谢谢

Joã*_*lva 6

不幸的是,你不能用Java做到这一点.但是,您可以MathUtils使用isBetween方法创建一个类,如下所示:

public static boolean isBetween(int n, int begin, int end) {
  return n > begin && n < end;
}
Run Code Online (Sandbox Code Playgroud)

然后,你可以使用(假设你import static):

if (isBetween(x, 1, 3)) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您有很多范围条件,这只会有所帮助.


Pet*_*ham 6

假设你在谈论整数:

if ( x == 2 ) { .... }
Run Code Online (Sandbox Code Playgroud)

有很多Java来自它,它是一个更好的C++ - 在C或C++中,布尔值和整数之间有自动转换,所以在C++中:

int x = 5;

std::cout << std::boolalpha;

std::cout << ( 1 < x < 3 ) << std::endl;
std::cout << ( ( 1 < x ) < 3 ) << std::endl;
Run Code Online (Sandbox Code Playgroud)

将打印"true"两次,因为( 1 < x )计算结果为1和1小于3.Java集中于通过使布尔和整数类型不可转换来解析两个二元运算符来解决这种歧义,因此您必须将它们与另一个运算符连接起来; 其他语言不会尝试修复C++,但会有更复杂的解析规则,因此_ <_ <_是一个做正确事情的三元运算符.