gpt4 book ai didi

java - 检查元素是否存在于 boolean 数组中

转载 作者:行者123 更新时间:2023-11-30 07:16:33 28 4
gpt4 key购买 nike

我参加了一个编程类(class),我正在重温我不太正确的旧程序。这是一个生命游戏程序,我有一个关于代码清理的问题。

在检查其邻居的 boolean 值是 true 还是 false 之前,我需要确保数组元素在边界内。我有一个语句来检查 firstGen[0][0] 的左上角(上一行,左一列)是否在边界内。是否有一种更简单或更优雅的方法来检查元素是否在边界内或将元素检查限制在给定数组的边界内,而无需每个 if 使用四个 && 条件声明?

请注意,到目前为止我只更改了第一个 if 语句,因此其他地方可能存在错误。我还排除了对其他邻居的边界检查。

    public static boolean[][] generation(boolean[][] firstGen)
{
int length = firstGen.length;
boolean[][] newGen = new boolean[length][length];

for (int j = 0; j < firstGen[0].length; j++)
{ for (int i = 1; i < firstGen.length; i++)
{
int count = 0;
if ((i-1 >= 0) && (i-1 < length) && (j-1 >= 0) && (j-1 < length)) //top-left element exists
{ if (newGen[i-1][j-1] == true) count++; } //increment `count` if top-left element is true

if ((newGen[i][j] == false) && (count == 3)) newGen[i][j] = true;
else if ((newGen[i][j] == true) && (count == 1)) newGen[i][j] = false;
else if ((newGen[i][j] == true) && (count > 3)) newGen[i][j] = false;
else break;
}
}
return newGen;
}

最佳答案

如果ij在界限内,那么你肯定知道 i - 1 < lengthj - 1 < length都是真的。

还有:

  • i - 1 >= 0可以写成i > 0
  • if (condition == true)可以重写if (cond)

所以你可以替换:

if  ((i-1 >= 0) && (i-1 < length) && (j-1 >= 0) && (j-1 < length)) //top-left element exists
{ if (newGen[i-1][j-1] == true) count++; } //increment `count` if top-left element is true

通过:

//increment `count` if top-left element is true
if (i > 0 && j > 0 && newGen[i-1][j-1]) count++;

关于java - 检查元素是否存在于 boolean 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839118/

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