第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么 Java 在 break 語句后不重置內(nèi)循環(huán)的值?

為什么 Java 在 break 語句后不重置內(nèi)循環(huán)的值?

慕斯王 2023-05-10 15:16:55
我目前正在努力理解這個(gè)循環(huán):class Test{    public static void main(String args[]){        int i=0, j=0;        X1: for(i = 0; i < 3; i++){            X2: for(j = 3; j > 0; j--){                if(i < j) continue X1;                else break X2;            }        }        System.out.println(i+" "+j);    }}到目前為止,我知道變量的值將是: 0 3  1 3  2 3 最后將打印3 3.第三次迭代后,條件X1將為假,從而導(dǎo)致循環(huán)語句中斷。雖然我很清楚為什么 j 的值i等于 3,但我不明白為什么 j 的值也等于 3。最初 j 的值為0,當(dāng)我們進(jìn)入循環(huán)時(shí)是3,但在最后一次迭代中我們并沒有真正進(jìn)入循環(huán)X2,因?yàn)閕<3評(píng)估為 false。所以問題是為什么編譯器“保存”的值k?即使編譯器保存了j上一次迭代的值也應(yīng)該是2......
查看完整描述

5 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

j--這里是死代碼,永遠(yuǎn)無法訪問。想一想這段代碼是如何工作的:


X2: for(j = 3; j > 0; j--){

    if(i < j) continue X1;

    else break X2;

}

如果在一種情況下你繼續(xù)到外循環(huán),在另一種情況下你會(huì)跳出這個(gè)循環(huán)。這個(gè)循環(huán)實(shí)際上從來沒有超過一次迭代,所以你不妨這樣寫:


int i=0, j=0;

X1: for(i = 0; i < 3; i++){

    j = 3;

    if(i < j) continue X1;  //This line does nothing at this point as well since the loop will iterate anyway

}

這與您當(dāng)前的代碼完全相同,它清楚地表明jwill stay at 3。


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

最初 j 的值為 0,當(dāng)我們進(jìn)入循環(huán)時(shí)為 3,但在最后一次迭代中我們并沒有真正進(jìn)入 X2 循環(huán),因?yàn)?i<3 評(píng)估為 false。所以問題是為什么編譯器“保存” k 的值?

j 在 main 的第一行聲明。這意味著它將保留在范圍內(nèi)并保留所有修改,直到 main 結(jié)束并且變量被銷毀。

即使編譯器保存了上一次迭代的 j 值,它也應(yīng)該是 2。

正如您上面所說,循環(huán)的最后一次迭代中 j 的值是 3 而不是 2。當(dāng)您繼續(xù) X1 時(shí),j-- 從未執(zhí)行過。


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

這是因?yàn)槠渌颂岬降乃来a。您應(yīng)該逐步調(diào)試您的程序 我不知道您使用的是哪個(gè) IDE,但它可能提供此功能。

但是,我想建議您不要使用 continue 和 break 語句。導(dǎo)師非常不鼓勵(lì)。它們會(huì)像您一樣引起意大利面條式編程和混亂。


查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

for(j = 3; j > 0; j--)
您正在設(shè)置j=3j--直到下一個(gè) j 循環(huán)才運(yùn)行,它永遠(yuǎn)不會(huì)發(fā)生,所以它不能是 2。

查看完整回答
反對(duì) 回復(fù) 2023-05-10
?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

else break X2;


j--

永遠(yuǎn)不會(huì)被達(dá)到。


'i' 在循環(huán)內(nèi)永遠(yuǎn)不能為 3,因?yàn)橥庋h(huán)的條件是 i < 3,因此內(nèi)循環(huán)只能執(zhí)行


if(i < j) continue X1;

因?yàn)?'j' 總是從 3 開始并且 i <= 2. 總是正確的。所以 'j' 永遠(yuǎn)不會(huì)改變值,并且當(dāng) i = 3 時(shí)外循環(huán)中斷,結(jié)果是“3 3”。


i j

0 3

1 3

2 3

break occurs;

print i + j;


查看完整回答
反對(duì) 回復(fù) 2023-05-10
  • 5 回答
  • 0 關(guān)注
  • 253 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)