如何避免Java中的过多循环?

我有一个包含四个for循环的方法,并且您可以看到每个循环都执行相同的操作,这似乎是代码的味道。 那么,有什么更好的方法可以使它变得越来越短?

这是我的代码:

  void explodeDirections() {
    for (int i = 0; i < strength; i++)  
      if (!explode(x+i, y))
        break;

    for (int i = 0; i < strength; i++) 
      if (!explode(x, y+i))
        break;

    for (int i = 0; i < strength; i++) 
      if (!explode(x-i, y))
        break;

    for (int i = 0; i < strength; i++) 
      if (!explode(x, y-i))
        break;
  }

提前致谢 :)

评论
  • cet
    cet 回复

    在为图块网格编写代码时,这是非常常见的模式。为了有效地处理它,您可以编写:

        static int[][] DIRECTIONS = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    
        void explodeDirections(int x, int y, int strength) {
            for (int[] dir : DIRECTIONS) {
                for (int i = 0; i < strength; i++) {
                    if (!explode(x + (i * dir[0]), y + (i * dir[1]))) {
                        break;
                    }
                }
            }
        }
    
        void explode(int x, int y) { /* some stuff */ }
    

    但是,当然可以用任何一种语言来实现这种想法。