以下是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
- 语句,是否有更有效的方法?
答案 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
。你的来电。如果您不需要所有日志记录,那么您可以不使用该功能。但恕我直言,日志记录中有太多重复的代码。