iT邦幫忙

0

java for迴圈的語法問題

  • 分享至 

  • xImage
for(int i=0, System.out.println("123");i<5;i++){
    
}

請問這段程式出錯的地方在哪裡

harry xie iT邦研究生 1 級 ‧ 2022-06-29 19:20:43 檢舉
-
Nil iT邦新手 5 級 ‧ 2022-06-29 21:17:18 檢舉
for(int i=0;i<5;i++){
System.out.println("123");
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-06-29 23:11:37

參考下圖說明
「Initialization 的區塊只能寫些 i=0,j=0 之類的設定初始值的敍述」

https://ithelp.ithome.com.tw/upload/images/20220629/20001787CohWaWiqut.png
資料來源

看更多先前的回應...收起先前的回應...
s1355269 iT邦新手 5 級 ‧ 2022-06-29 23:36:25 檢舉
int i = 0;
for(System.out.println("kk");i<5;i++){
			System.out.println("kk");
		}

但是我如果是這樣寫就可以,這樣應該也沒有初始化什麼東西吧。

jokie7585 iT邦新手 5 級 ‧ 2022-06-30 07:36:08 檢舉

scope的問題,你這樣做在迴圈結束後i還是會存在,而且值會變成5.

相反你寫在for迴圈的 statement 內, i 就只存在 for 的 block 中。

題外話,而且你這樣應該會印6次,assign i 時 i 也不會是小於5,跟你想表達的應該不一樣,重點是i會污染到你的local scope, 除非這是你的本意,但看起來應該不是,也不會有人這樣寫

但是我如果是這樣寫就可以,這樣應該也沒有初始化什麼東西吧。

可以

所以 initialization 那段可以修改成
1.兩個(含)以上:「設定初值」敍述(int i=0,j=0)
2.一個敍述:任意敍述

canrong iT邦新手 2 級 ‧ 2022-06-30 09:00:30 檢舉
for(初始化;條件式;反覆運算器)

初始化代表for內整個程式區塊狀態初始化,例如。

int i = 0;
i = 100;
for(i = 0; ;);

當你想要重複使用i這個變數,你可以將i的初始化參數放在for第一項。
for其實每個參數都並非必要輸入,例如。

for(;;);

該寫法約等於while(true);
基本上你也可以將初始化邏輯都寫在for上文,將跳脫判斷的條件式以及反覆運算器的邏輯寫在for程式區塊內,但這樣的寫法基本上等於寫while(true)迴圈。

int i = 0;
while(true)
{
if(i>=5) break;
else System.out.println("kk");
i++;
}

我要發表回答

立即登入回答