我正在创建一个4x4 2D阵列。我需要收到通知,或者在所有元素都变为true时获取值。这是“如果the2DArray [] =真{blah blah}”这么简单吗?
谢谢! 附:我还没有编写代码。我问这个问题有助于制定程序的逻辑。
答案 0 :(得分:3)
对于2D数组,您必须手动遍历数组中的所有元素以检查一个值是否为false。
这方面的一个例子是:
public boolean checkArr(boolean[][] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
if(!arr[i][j])
return false;
}
}
return true;
}
答案 1 :(得分:0)
如果您希望在所有元素都为真的情况下采取行动,则必须检查每个元素。
boolean flag=true;
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(array[i][j] == 'false')
flag=false;
return;
}
}
if(flag == true)
// your action
答案 2 :(得分:0)
当所有数组元素都为真时,可以用来通知的一种方法是将数组元素包装在自己的对象中,该对象触发on / off事件,并将整个数组包装在触发allOn事件的对象中。像这样的东西(代码是c#,但希望你可以遵循):
public class Element
{
public event Action TurnedOn = delegate { };
public event Action TurnedOff = delegate { };
private bool state;
public void TurnOn()
{
state = true;
TurnedOn();
}
public void TurnOff()
{
state = false;
TrunedOff();
}
}
public class My2DArray
{
public event Action AllTurnedOn = delegate { };
private readonly Element[,] array;
private int numberOfElementsThatHaveBeenTurnedOn;
public My2DArray(Element[,] array)
{
this.array = array;
foreach (Element element in array)
{
element.TurnedOn += OnElementTurnedOn;
element.TurnedOff += OnElementTurnedOff;
}
}
private void OnElementTurnedOn()
{
numberOfElementsThatHaveBeenTurnedOn++;
int amountOfElements = GetAmountOfElementsInArray();
bool allElementsAreOn = numberOfElementsThatHaveBeenTurnedOn == amountOfElements;
if (allElementsareOn)
{
AllTurnedOn();
}
}
private void OnElementTurnedOff()
{
numberOfElementsThatHaveBeenTurnedOn--;
}
}
如果所有元素都已打开,则计算的逻辑假设所有元素都以false开头。