作者bera (= =)
看板java
標題[問題] 有關迴圈標籤的問題
時間Mon Nov 21 23:31:44 2011
最近在自學JAVA
按照書上習題把程式打出來
卻不知道為什麼答案是這樣子的(可能觀念沒搞懂)
class Q4_16
{
public static void main(String [] args)
{
mark1:
mark2:
for(int i=5 ; i>0 ; i--)
mark3:
for(int j=0 ; j<5 ; j++)
{
mark4: if(j==i)
break mark1;
System.out.print("*");
}
}
}
這題打出來會出現9個*號, 這題比較沒問題
而下一題就把break改成continue
class Q4_17
{
public static void main(String [] args)
{
mark1:
mark2:
for(int i=5 ; i>0 ; i--)
mark3:
for(int j=0 ; j<5 ; j++)
{
mark4: if(j==i)
continue mark1;
System.out.print("*");
}
}
}
而這一題, 本以為答案是出現15個*號
但卻出現這樣的訊息 error: not a loop label:mark1
continue mark1;
^
1 error
我把程式改成以下
class Q4_17
{
public static void main(String [] args)
{
mark1:
mark2:
for(int i=5 ; i>0 ; i--)
mark3:
for(int j=0 ; j<5 ; j++)
{
mark4: if(j==i)
continue mark
2;
System.out.print("*");
}
}
}
就是15個*號了Q_Q
到底是為什麼呀>"<
希望可以有人幫我解惑(想好久了Q口Q)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.174.5.80
→ awert:錯誤訊息其實講得很清楚,mark1後面並沒有接任何loop 11/21 23:46
→ awert:沒有任何loop, 當然就沒辦法在mark1 continue loop 11/21 23:48
→ charatible:mark這種是goto語法嗎? 11/22 00:41
→ awert:這叫label, 很類似但不是goto,說實在話很少會用到.. 11/22 00:44
→ charatible:難怪有人跟我說不要用這個...很模糊 11/22 00:51
→ bera:再請問一下,那Q4_16的mark1後面也沒有任何loop,卻可以break? 11/22 01:33
→ bera:Q4_16跟Q4_17有差異點嗎? 還是有點轉不太過來呢~_~ 11/22 01:41
→ awert:label只是對statement做標記,並非是一種位置 11/22 01:49
→ awert:break mark1是終止被標成mark1的statement, 不是回到mark1 11/22 01:51
→ bera:感謝^^ 思路有點慢慢清晰了, 我再慢慢吸收~* 11/22 01:57
→ qrtt1:如果有新人這麼寫,真想打爆他的頭啊 11/22 09:13
→ luoqr:還沒用過標籤....最好一輩子都不要用到 11/22 22:34