Java:数学条件

Java:数学条件,java,math,conditional-statements,Java,Math,Conditional Statements,有没有一个简单的方法可以做到这一点 if (1 < x && x < 3) { .... } if(1

有没有一个简单的方法可以做到这一点

if (1 < x && x < 3) { .... }
if(1
我想要这样的东西:

if (1 < x < 3) { .... }
if(1
我知道上面的代码是错误的,但是


谢谢

不幸的是,在Java中无法做到这一点。但是,您可以使用
isBetween
方法创建一个类,比如
MathUtils
,如下所示:

public static boolean isBetween(int n, int begin, int end) {
  return n > begin && n < end;
}

但这只有在有许多范围条件的情况下才有帮助。

不幸的是,在Java中无法做到这一点。但是,您可以使用
isBetween
方法创建一个类,比如
MathUtils
,如下所示:

public static boolean isBetween(int n, int begin, int end) {
  return n > begin && n < end;
}

但这只有在有许多范围条件时才有用。

使用
&&
的语句是最简单的。Java或我所知道的任何其他C语言都支持链式不等式。

使用
&&
的语句是最简单的。Java或我所知道的任何其他C风格语言都支持链式不等式。

不使用内置语言;你需要用你的第一个答案

有几个库允许您执行以下操作:

Range range = new ExclusiveRange(1,3);
if (range.contains(x)) { ... }

不使用内置语言;你需要用你的第一个答案

有几个库允许您执行以下操作:

Range range = new ExclusiveRange(1,3);
if (range.contains(x)) { ... }

就效率而言,
(1
是你能得到的最好的。要将整数放入一个范围,需要进行两次比较


如果你想让代码更可读,并且有很多这样的范围,你可能想考虑用一个包含()函数创建一个间隔类。

< P>在效率方面,<代码>(1<x和& x<3)< /代码>和你将得到的一样好。要将整数放入一个范围,需要进行两次比较


<>如果你想让代码更可读,并且有很多这样的范围,你可能想考虑用一个包含()函数创建一个间隔类。

你用直的java语法得到了最简单的形式。如果需要,可以引入一种方法:

public static boolean isBetween(int x, int min, int max) {
    return min < x && x < max;
}

但我不认为这真的更清楚,这意味着有更多的可能性把论点放在错误的顺序。另一个答案中建议的
范围
类可以缓解这种担忧,但代价是增加更多的混乱…

您已经获得了简单的Java语法形式。如果需要,可以引入一种方法:

public static boolean isBetween(int x, int min, int max) {
    return min < x && x < max;
}

但我不认为这真的更清楚,这意味着有更多的可能性把论点放在错误的顺序。另一个答案中建议的
范围
类将减轻这种担忧,但代价是增加更多的混乱…

假设您谈论的是整数:

if ( x == 2 ) { .... }

<> P.>有很多小数点的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;
intx=5;

假设你在谈论整数:

if ( x == 2 ) { .... }

<> P.>有很多小数点的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;
intx=5;

标准::cout(或效率,就此而言)在两个方面都是正确的。:-)对于OP介绍的简单情况,使用两个本地比较肯定会更好。但在更复杂的情况下,能够传递一个范围对象而不是一对整数,实际上可能更干净、更可读(想象一下,在已经使用6个
int
参数的方法签名中添加任何一个选项……。(或者效率,就此而言)在这两个方面都是正确的。:-)对于OP介绍的简单情况,使用两个本地比较肯定会更好。但是在更复杂的情况下,能够传递一个范围对象而不是一对int,实际上可能更干净、更可读(想象一下,在一个已经需要6个
int
参数的方法签名中添加任何一个选项…)。Python vs Java:1-0不值得为此使语法更复杂,Python vs Java:1-0不值得为此而使语法变得更复杂,只要克服它就行了。