布尔值不会中断语句

Boolean doesn't break for statement

我是论坛新手和编程新手。 如果我的问题真的很基础,我提前道歉,但我真的很陌生,我必须在很短的时间内学到很多东西,所以我可能会错过几个概念。

关于我的问题, 我有一个方法应该检查矩阵是否仍有可用空间并在找到时停止。

矩阵已经像这样初始化了(我知道它可以在一行中,但矩阵是在对象的构造函数中创建的)

protected char[][] matJeu = null;
matJeu = new char[10][10];

然后用 for 语句填充像这样的空格,它工作得很好

方法在这里

public boolean checkIfFull()
{
    boolean full = true;
    for (int i=0;i<matJeu.length || !full;i++)
    {
        for (int j=0;j<matJeu[i].length || !full ;j++)
        {
            if(matJeu[i][j]==' '){
                full = false;
            }
        }
    }
    return full;
} 

问题是当完整的布尔值变为 false 时,for 循环不会中断并最终导致 ArrayOutOfBounds 异常。如果矩阵已满,则 returns 为真。所以我可能错过了导致布尔值中断 for 循环的正确方法。

提前感谢您的宝贵时间。

循环的条件部分将导致循环继续,只要它 returns true.

一旦 full=false 被击中,那么 !full==true,条件语句将始终评估为 trueanything || true == true),本质上使您处于无限状态循环使用您当前的代码。

要中断 for 循环,您需要条件部分计算为 false

我不确定您打算让循环做什么,因为根据上一段,在第一个 space 字符处停止似乎不是您想要的。

问题是您的 for 循环中的 条件。

for (int i=0;i<matJeu.length || !full;i++)

在这里,只要至少一个条件为真,循环就会继续执行。

因为i<mathJeu.length仍然为真,循环继续执行,不管fulltrue还是false

相反 - 您想要的是 条件。

for (int i=0;i<matJeu.length && full;i++)

这将告诉它“只要它低于数组长度并且我们检测到它仍然是满的,就继续循环”。