簡體   English   中英

布爾值不會破壞語句

[英]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 ,條件語句將始終為trueanything || true == true ),這實際上使您陷入了當前代碼的無限循環。

要打破for循環,您需要將條件部分評估為false

我不確定您打算執行循環操作的原因,因為在第一個空格字符處停止似乎不像您根據上一段所希望的那樣。

問題是您的for循環上的or條件。

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

在這里,只要至少一個條件為真,循環就將繼續執行。

因為i<mathJeu.length仍然為true,所以無論fulltrue還是false ,循環都會繼續執行。

相反,您想要的是and條件。

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

這將告訴它“只要循環長度小於數組長度並且我們檢測到它仍已滿,就保持循環”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM