作者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
1F:→ awert:错误讯息其实讲得很清楚,mark1後面并没有接任何loop 11/21 23:46
2F:→ awert:没有任何loop, 当然就没办法在mark1 continue loop 11/21 23:48
3F:→ charatible:mark这种是goto语法吗? 11/22 00:41
4F:→ awert:这叫label, 很类似但不是goto,说实在话很少会用到.. 11/22 00:44
5F:→ charatible:难怪有人跟我说不要用这个...很模糊 11/22 00:51
6F:→ bera:再请问一下,那Q4_16的mark1後面也没有任何loop,却可以break? 11/22 01:33
7F:→ bera:Q4_16跟Q4_17有差异点吗? 还是有点转不太过来呢~_~ 11/22 01:41
8F:→ awert:label只是对statement做标记,并非是一种位置 11/22 01:49
9F:→ awert:break mark1是终止被标成mark1的statement, 不是回到mark1 11/22 01:51
10F:→ bera:感谢^^ 思路有点慢慢清晰了, 我再慢慢吸收~* 11/22 01:57
11F:→ qrtt1:如果有新人这麽写,真想打爆他的头啊 11/22 09:13
12F:→ luoqr:还没用过标签....最好一辈子都不要用到 11/22 22:34