根据具体情况重新设计算法吧,goto不好掌握,很容易将程序搞得乱七八曹

解决方案 »

  1.   

    可以使用方法代替:
      private void normalMethod()
    {
       ..............
       goto1() ;
      ...............
       goto2() ;
      ................
    }  private void goto1()
    {
       ..........
       ..........
       normalMethod() ;
    } private void goto2()
    {
        ..........
       ..........
       normalMethod() ;
    }
      

  2.   

    所有的goto语句都能够转换成三种控制结构。
      

  3.   

    这段程序是《Think in java》中的,希望能对你有帮助!//: c03:LabeledFor.java
    //java's "labeled for" loop.
    public class LabeledFor
    {
    public static void main(String args[])
    {
    int i=0;
    outer://can't have statements here
    for(;true;)
    {
    //infinite loop
    inner://Can't have statements here
    for(;i<10;i++)
    {
    prt("i="+i);
    if(i==2)
    {
    prt("continue");
    continue;
    }
    if(i==3)
    {
    prt("break");
    i++;//Otherwise i never 
        //gets incremented.
    break;
    }
    if(i==7)
    {
    prt("continue");
    i++;//Otherwise i never
        //gets incremented.
    continue outer;
    }
    if(i==8)
    {
    prt("break outer");
    break outer;
    }
    for(int k=0;k<5;k++)
    {
    if(k==3)
    {
    prt("continue inner");
    continue inner;
    }
    }
    }
    }
    //Can't break or continue
    //to labels here
    }
    static void prt(String s)
    {
    System.out.println(s);
    }
    }运行结果:
    i=0
    continue inner
    i=1
    continue inner
    i=2
    continue
    i=3
    break
    i=4
    continue inner
    i=5
    continue inner
    i=6
    continue inner
    i=7
    continue outer
    i=8
    continue outer
      

  4.   

    多谢各位大侠给小弟出的主义!谢谢大家, tlowl(风流才子) 给的办法是一个比较好的解决方案,这也是我刚开始的第一个方案!谢谢tlowl(风流才子)。!
    不过我最近突发奇想:能不能用一个内部类(inner class)实现goto?看如下代码:
    void foo()
    {
        // do something
        for(;;;)
        {
            while(true)
            {
                goto L2;
      
      

  5.   

    继续!一个能解决复杂问题的方案,大家讨论一下吧!
    void foo()
    {
    L1:
        // do something
        for(;;)
        {
            while(true)
            {
                goto L2;
            }
            L2:
                goto L3;
        }
    L3:
        // do something
        goto L1
    }
    如果用内部类实现:
    void foo()
    {
        class A {
           int start() {
               // do something
               if( L1() == -1)
                    return -1;
               return 0;
           }
           int L1() {
             for(;;)
             {
               class AA {
                   int start()
                   {
                       while(true)
                       {
                           return L2();
                        }
                        if(L2() == -1)
                             return -1;
                        return 0;
                   }
                           
                   int L2() {
                      if(true)
                           return L3();
                      return 0;
                   }
               }// end of class AA
               AA AA = new AA(); 
               if( AA.start() == -1)
                  return -1;
            }// end of for
          }// end of L1;
         int L3() {
           // do something
           if( L1() == -1) 
               return -1;
         return 0;
         }
        A a = new A();
          a.start();
    }