减少“if-else”循环的大小

时间:2014-09-30 14:59:10

标签: java

我想知道是否有办法减少这个循环的大小。我正在寻找以+10为增量的条件,然后相应地加载图像,也在前一个的X,Y坐标+10中。提前谢谢。

  if (xpos >= 80){
  image(imgRainCloud, 90, 10);
  }
  if (xpos >= 90){
  image(imgBlock, 90, 10);
  image(imgRainCloud, 100, 10);
  }
  if(xpos >= 100){
  image(imgBlock, 100, 10);
  image(imgRainCloud, 110, 10);
  }
  if(xpos >= 110){
  image(imgBlock, 110, 10);
  image(imgRainCloud, 120, 10);
  }
  if(xpos >= 120){
  image(imgBlock, 120, 10);
  image(imgRainCloud, 130, 10);
  }
  if(xpos >= 130){
  image(imgBlock, 130, 10);
  image(imgRainCloud, 140, 10);
  }
  if(xpos >= 140){
  image(imgBlock, 140, 10);
  image(imgRainCloud, 150, 10);
  }
  else(xpos < 80){
  image(imgBlock, 0, 0);
  image(imgRainCloud, 0, 0);
  }

3 个答案:

答案 0 :(得分:7)

if (xpos >= 80){
    image(imgRainCloud, 90, 10);

    for (int i = 90; xpos >= i; i+=10)
    {
        image(imgBlock, i, 10);
        image(imgRainCloud, i+10, 10);
    }
}
else
{
    image(imgBlock, 0, 0);
    image(imgRainCloud, 0, 0);
}

答案 1 :(得分:0)

你可以将if和else分成不同的集合 例如:

if (xpos > 110) {

    image(imgBlock, 110, 10);
    image(imgRainCloud, 120, 10);
    if (xpos > 120) {

        image(imgBlock, 120, 10);
        image(imgRainCloud, 130, 10);

    }

    if (xpos > 130) {

        image(imgBlock, 130, 10);
        image(imgRainCloud, 140, 10);

    }

    if (xpos > 140) {

        image(imgBlock, 140, 10);
        image(imgRainCloud, 150, 10);

    }

} else {

    if (xpos >= 80) {

        image(imgRainCloud, 90, 10);

    }

    if (xpos >= 90) {

        image(imgBlock, 90, 10);
        image(imgRainCloud, 100, 10);

    }

    if (xpos > 100) {

        image(imgBlock, 100, 10);
        image(imgRainCloud, 110, 10);

    }

}

答案 2 :(得分:0)

假设xpos是一个整数,假设您的代码示例缺少一堆else语句,您可能会执行以下操作:

int range = xpos / 10;
if (range > 14)
    range = 14;
if (range >= 8)
{
    image(imgBlock, range*10, 10);
    image(imgRainCloud, (range+1)*10, 10);
}
else
{
    image(imgBlock, 0, 0);
    image(imgRainCloud, 0, 0);
}

您也可以除以10,然后使用switch语句。