class MyAr
{
public static void main(String[] args)
{
outer:
for(int i=0; i<2; i++)
{
for(int j=0; j<2; j++)
{
System.out.println("i="+i+"j="+j);
if(i>0)
continue outer;
}
}
System.out.println("Continue");
}
}把continue换成break,貌似输出不变啊。
class MyFor
{
public static void main(String[] args)
{
int i,j;
outer:
for(i=1; i<3; i++)
inner:
for(j=1; j<3; j++)
{
if(j==2)
break outer;
System.out.println("Value for i="+i+" Value for j="+j);
}
}
}把break换成continue,结果变了。。搞不懂break和continue跳转到标号处是怎样执行的呢?
是否保留原来的值?
 
                                                           谢谢!!

解决方案 »

  1.   

    没用过java,不过建议不要写依赖编译器特性的代码。
      

  2.   

    public static void main(String[] args)
    {
        int i,j;
        outer://用break执行到BBBB处,相当于goto BBBB;
              //用continue执行到AAAA处,但不执行IIIII处的初始化语句,即保留i的值作判断
    //AAAA:
        for(i=1; i<3; i++)//IIIII
        inner:
        for(j=1; j<3; j++)
        {
            if(j==2)
            break outer;
            System.out.println("Value for i="+i+" Value for j="+j);
        }
    //BBBB:
    }
      

  3.   

    MyAr "continue"  result:"i=0j=0" 
                                     (i=0 outer loop true~ stared inner loop~1 i=0  j=0)
                            "i=0j=1" 
                                     ( go on inner loop j++  i=0 j=1)
                            "i=1j=0"  (j++ j<2 inner loop flase,out and go on outer loop
                                       i++ i=1,outer loop true~ stared inner loop~1 i=1                                       j=0,then ,i>0 true ,so ,goto and star loop outer~,"continue"                                    will no print,stared outer loop,and i++ i=2 i<2 false,
                                        so stop loop forward to print"continue")
                            "continue"      "break"     result:"i=0j=0"
                           
                            "i=0j=1"
                         
                            "i=1j=0"  (j++ j<2 inner loop flase,out and go on outer loop
                                       i++ i=1,outer loop true~ stared inner loop~1 i=1                                             j=0,then ,i>0 true ,so ,break loop outer~,                                                   stop all  loop,
                                         print"continue")
                            "continue" 
    MyFor result: "break" result:"Value for i=0 Value for j=0" 
                                            (i=0 outer loop true~ stared inner loop~1 i=0                                                 j=0)
                                  "Value for i=0 Value for j=1"
                                            ( go on inner loop j++  i=0 j=1)
                                            
                                            ( go on inner loop j++  i=0 j=2)
                                            (then , j==2 true ,so  break loop outer~,                                                   stop all  loop  )              "continue" result:"Value for i=0 Value for j=0" 
                                            (i=0 outer loop true~ stared inner loop~1 i=0                                                 j=0)
                                  "Value for i=0 Value for j=1"
                                            ( go on inner loop j++  i=0 j=1)
                                            
                                            ( go on inner loop j++  i=0 j=2)
                                            (then , j==2 true ,so  forward loop outer~)
                                  "Value for i=1 Value for j=0"
                                  "Value for i=1 Value for j=1"
                                             ( go on inner loop j++  i=0 j=2)
                                            (then , j==2 true ,so  forward loop outer~)
                                  "Value for i=2 Value for j=0" 
                                  "Value for i=2 Value for j=1" 
                                            ( go on inner loop j++  i=0 j=2)
                                            (then , j==2 true ,so  forward loop outer~)
                                            (i++i=3 i<3 flase,so ,loop stop~)
    break label;
    将标记处的循环中断;
    continue label;
    终止现在循环,跳至标记处重新开始循环                                       
                                  
                              
      

  4.   

    continue label;
    终止现在循环,跳至标记处继续开始循环
    应该是继续,“重新”我是想指循环的动作,它将继续原来的值循环 
    ^^ 用继续适当些
      

  5.   

    SUN的认证题目,就这个地方有点头大。。
      

  6.   

    public class MyFor
    {
      public static void main(String[] args)
      {
         int i;
         int j;
         outer:
         for(i=1; i<3; i++)
         inner:
         for(j=1; j<3; j++)
         if(j==2)
         break outer;
         System.out.println("Value for i="+i+" Value for j="+j);
      }
    }上述代码为什么不是无限循环啊?
    如果break到outer的地方,应该重新开始循环的呀。。是这样的伐?
      

  7.   

    Break和continue的作用不变,只不过可以指定下一个执行的位置,i和j的值也是会记忆的。
      

  8.   

    上面代码如果把break改成continue结果为:
    Value for i=1 value for j=1
    Value for i=2 value for j=1如果是break:
    结果为:
    Value for i=1 value for j=1为什么break后调到outer这里就结束了。。?
    能否帮我分析以下break在这里的执行流程,谢谢!!
      

  9.   

    哦,没注意 myfor i,j是从1开始的。
    我以为是从0开始的。。MyFor result: "break" result: 
                                           
                                  "Value for i=1 Value for j=1"
                                            ( go on inner loop j++  i=1 j=1)
                                            
                                            ( go on inner loop j++  i=1 j=2)
                                            (then , j==2 true ,so  break loop outer,stop 
                                             loop)              "continue"result:                                                                            
                                           
                                  
                                  "Value for i=1 Value for j=1"
                                             ( go on inner loop j++  i=0 j=2)
                                            (then , j==2 true ,so  forward loop outer~)
                                  "Value for i=2 Value for j=1" 
                                  
                                            ( go on inner loop j++  i=0 j=2)
                                            (then , j==2 true ,so  forward loop outer~)
                                            (i++i=3 i<3 flase,so ,loop stop~)
      

  10.   

    是不是break到outer处就直接停止循环了。。而不是再重新运行outer:下面的for循环?为什么不是运行outer:下面的第一个for循环啊,不是调到outer:处开始执行吗?
      

  11.   

    首先你可能被某些教程的用词弄糊涂了,你都写了程跑了,就应该自己分析程序执行的流程,为什么还要去生搬硬套那些文章的一些词??不清楚的话,你可以写N个不同的跑,越简单越好.然后自己弄清楚究竟是怎么回事,你是学程,不是研文
    其次,程序语言这东西是E文写的,老外不是乱凑字母来定关键字,你可以翻翻英文字典,
    break 断开,破坏~停止...continue 继续....e文,绝对有好处
      

  12.   

    malligator(不能再整天泡在CSDN里了!) ( ) 信誉:100    Blog  2006-12-5 13:06:46  得分: 0  
     
     
       
    public static void main(String[] args)
    {
        int i,j;
        outer://用break执行到BBBB处,相当于goto BBBB;
              //用continue执行到AAAA处,但不执行IIIII处的初始化语句,即保留i的值作判断
    //AAAA:
        for(i=1; i<3; i++)//IIIII
        inner:
        for(j=1; j<3; j++)
        {
            if(j==2)
            break outer;
            System.out.println("Value for i="+i+" Value for j="+j);
        }
    //BBBB:
    }
    ============
    你第一个例子是有条件的跳转,而且是先有动作(打印)后跳转;当i>0时,当循环已经结束了,用不用跳转都一样的!