Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 优雅的if编码方式(10<;x<;20)_Java - Fatal编程技术网

Java 优雅的if编码方式(10<;x<;20)

Java 优雅的if编码方式(10<;x<;20),java,Java,Java中是否有一种优雅的编码方式: if (10 < x < 20) { ... } if(10

Java中是否有一种优雅的编码方式:

if (10 < x < 20) {
   ...
}
if(10
i、 e.“如果x在10和20之间”

而不是必须写作

if ((x > 10) && (x < 20)) {
   ...
}
if((x>10)和&(x<20)){
...
}

谢谢

没有。
肯尼在评论中提到了这一点

if (10 < x && x < 20)
if(10

您希望使它们都小于或都大于;当你试图快速阅读时,颠倒比较的方向会使逻辑混乱。

不,但你可以重新安排,使之更好,或者如果你感到不舒服,可以写一个包装:

if (InRange(x, 10, 20)) { ... }
或者,正如卡尔所说:

if (new Range(10, 20).contains(x)) { ... }
虽然就我个人而言,我不认为这有什么意义。这是一个无用的抽象概念。简单的布尔语句非常明显


不过,现在我想了想,根据卡尔下面的评论,有时候范围是一个完全有效和有用的抽象(例如,在处理提要时)。因此,根据
x
的语义,可能您确实需要一个抽象。

您唯一能做的就是松开额外的括号,因为
&&
的优先级低于
10&&x<20){
...
}
除此之外:没有捷径了。

if(x<20)
  if(x < 20)
  {
   if(x > 10)
   {

   //...

   }
  }
{ 如果(x>10) { //... } }

if(x>10)
{
如果(x<20)
{
//...
}
}

最快的方法是开关


编辑:


编译成一个跳转表,而不是一长串的ifs。

if(10
if(Math.abs(x-15)<5){
(我的意思是,整数溢出无关紧要)或
新范围(10,20)。包含(x)
@Carl Manaster:是的,这将是hip-OO的方法。很好的调用。是的,让我们实例化一个新对象,而不是让我们漂亮的代码受制于
&
表达式。hip-OO将创建对象作为参数传递,但不调用单个方法。+1有趣的是,先生,您赢得了一个Internet,您可以在自己身上找到它我想你需要解释一下你的意思,这在我看来非常优雅,只是没有一个速记/糖符号。
if (x > 10 && x < 20) {
   ...
}
  if(x < 20)
  {
   if(x > 10)
   {

   //...

   }
  }
 if(x > 10)
  {
   if(x < 20)
   {

   //...

   }
  }
switch(x) {
  case 10:
  case 11:
  case 12:
  case 13:
  ...
  case 19: System.out.println("yes");
}