[英]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异常而结束。 如果矩阵已满,则仅返回true。 因此,我可能缺少使布尔值打破for循环的正确方法。
预先感谢您的宝贵时间。
只要返回true
,循环的条件部分将导致循环继续。
一旦点击full=false
,然后!full==true
,条件语句将始终为true
( anything || true == true
),这实际上使您陷入了当前代码的无限循环。
要打破for循环,您需要将条件部分评估为false
。
我不确定您打算执行循环操作的原因,因为在第一个空格字符处停止似乎不像您根据上一段所希望的那样。
问题是您的for循环上的or条件。
for (int i=0;i<matJeu.length || !full;i++)
在这里,只要至少一个条件为真,循环就将继续执行。
因为i<mathJeu.length
仍然为true,所以无论full
是true
还是false
,循环都会继续执行。
相反,您想要的是and条件。
for (int i=0;i<matJeu.length && full;i++)
这将告诉它“只要循环长度小于数组长度并且我们检测到它仍已满,就保持循环”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.