这里是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的double array,以及每个index是一个空格向上,向下,左,右。然后,我想要print的index的array,有字符'B‘。在没有所有这些if-statements的情况下,是否有更有效的方法来做到这一点呢?
发布于 2015-01-26 06:06:39
利用短路||,将所有重复的代码组合成一个函数。这会让你开始:
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。你说了算。如果您不需要所有这些日志记录,那么您可以不使用该函数。但是IMHO在日志记录中有太多重复的代码。
https://stackoverflow.com/questions/28145395
复制相似问题