如何合并用于在2D空间中搜索单元格的if语句

时间:2015-01-26 06:03:07

标签: java arrays if-statement

以下是code的一部分:

 if (y[X][Y] == 'B')
        {
            System.out.printf("      (%2d,%2d)         %3d\n", X, Y, digCount);
            boneFound = true;
        }
        else
        if (y[X][Y + 1] == 'B')
        {
            System.out.printf("      (%2d,%2d)         %3d\n", X, Y + 1, digCount);
            boneFound = true;
        }
        else
        if (y[X][Y - 1] == 'B')
        {
            System.out.printf("      (%2d,%2d)         %3d\n", X, Y - 1, digCount);
            boneFound = true;
        }
        else
        if (y[X - 1][Y] == 'B')
        {
            System.out.printf("      (%2d,%2d)         %3d\n", X - 1, Y, digCount);
            boneFound = true;
        }
        else
        if (y[X + 1][Y] == 'B')
        {
            System.out.printf("      (%2d,%2d)         %3d\n", X + 1, Y, digCount);
            boneFound = true;

我想搜索一个index的{​​{1}}以及每个double array,这是一个空间,向上,向下,向左和向右。然后我想index print index字符'B'。如果没有所有这些array - 语句,是否有更有效的方法?

1 个答案:

答案 0 :(得分:2)

利用短路||并将所有重复的代码分组到一个函数中。这将让你开始:

boneFound = at(X,Y) || at(X,Y+1) || at(X,Y-1) || at(X-1,Y) || at(X+1,Y);

您的at方法可能类似于:

private static boolean at(X, Y) {
   boolean boneHere = this.y[X][Y] == 'B';
   if (boneHere) {
       System.out.printf(............);
   }
   return boneHere;
}

或者可以称之为boneAt。你的来电。如果您不需要所有日志记录,那么您可以不使用该功能。但恕我直言,日志记录中有太多重复的代码。