[英]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.