gpt4 book ai didi

java - 如何将这 4 个循环函数简化为 1 个函数?

转载 作者:行者123 更新时间:2023-12-01 14:20:34 28 4
gpt4 key购买 nike

我有一个练习。一个 int[8][8] 国际象棋网格。我必须找出白色是否可以带走黑色。输入是:(小写=黑色,大写=白色)

tc.drf.t
ppp.pppp
...p...c
.....f..
..C..P..
..P.D.P.
PP.....P
T.F.RFCT

对于 qeen/towers,我使用了一个循环来检查每个方向(顶部/底部/左/右),现在有 4 个看起来或多或少相同的简单循环函数。我只想拥有一个功能,但找不到方法。有什么想法吗?

    static boolean attackRowRt(String[] board, int y, int fromX){
for(int x=fromX+1; x<=7; x++){
char attacked = board[y].charAt(x);
if(attacked == '.') continue;
return Character.isLowerCase(attacked);
}
return false;
}

static boolean attackRowLt(String[] board, int y, int fromX){
for(int x=fromX-1; x>=0; x--){
char attacked = board[y].charAt(x);
if(attacked == '.') continue;
return Character.isLowerCase(attacked);
}
return false;
}

static boolean attackColBtm(String[] board, int x, int fromY){
for(int y=fromY+1; y<=7; y++){
char attacked = board[y].charAt(x);
if(attacked == '.') continue;
return Character.isLowerCase(attacked);
}
return false;
}

static boolean attackColTop(String[] board, int x, int fromY){
for(int y=fromY-1; y>=0; y--){
char attacked = board[y].charAt(x);
if(attacked == '.') continue;
return Character.isLowerCase(attacked);
}
return false;
}

最佳答案

您的所有四个方法共享三行代码,这些代码可以提取到一个单独的方法中,您可以从当前方法中调用该方法(如果您反转与 attacked< 的比较,则可以将其简化为两行代码)。所以基本上有一个单独的方法来执行以下操作并从您的方法中调用它:

char attacked = board[y].charAt(x);
if(attacked != '.') {
return Character.isLowerCase(attacked);
}

此外,您的方法成对地彼此相等:attackColTop()attackRowLt 相同,其他两个方法也相同。如果唯一的区别是您传递给方法的参数的值,则您不需要有两个执行相同操作的方法:您可以将这两个方法归为一个,然后使用适当的值调用它。

关于java - 如何将这 4 个循环函数简化为 1 个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63741507/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com