public class Test {
    public void func1() {
        for(int i = 0;i<10;i++) {
            if(i==4) {
            //这里需要直接返回到Test()执行func2();后面的语句,这该怎么做?
            }
            System.our.println("func1");  
        }
    }    public void func2() {
        func1();
        System.out.println("func2");
    }    Test() {
        func2();
        System.out.println("Test");
        ……
    }    public stativ void main(String [] args) {
        new Test();
    }
}

解决方案 »

  1.   

    跳出循环,用break;
    if(i == 4) break; // Out of for loop
      

  2.   

    return退出方法才能直接跳到f2的System.out.println("func2"); 
      

  3.   

    break后就返回func2()执行后面的语句了,我要的是返回Test(),执行func2()下面的语句。而且如果func1()的for循环后面还有语句的话,break了还是会接着执行啊。
      

  4.   

    楼上都回答了 那我就指摘下代码错误吧:
    System.our.println("func1"); 应为:System.out.println("func1");  
    public stativ void main(String [] args) { 
            new Test(); 
        } 
    应为:static
      

  5.   

    但是return是返回到func2()再执行下面的语句,而我就是要跳过func2()中的语句啊,如果再在func2()中return的话明显是不行的,真郁闷啊!
      

  6.   

    break只是跳出了当前循环,要实现你的意思,逻辑不该这么写。
      

  7.   

    本来就跟break不沾边啊,是你们硬要扯上break,我是要跳出所有函数调用执行下面的语句。
      

  8.   

    直接Test()那就真的死循环了。
      

  9.   

    退出函数的话,直接 return; 能行么?
      

  10.   

    package mytest;public class Test { 
        public void func1() { 
            for(int i = 0;i <10;i++) { 
                if(i==4) { 
                return;
                } 
                System.out.println("func1"+Integer.toString(i));  
            } 
        }     public void func2() { 
            func1(); 
            System.out.println("func2"); 
        }     Test() { 
            func2(); 
            System.out.println("Test"); 
       
        }     public static void main(String [] args) { 
            new Test(); 
        } 
    }
    就是直接return,退出当前的函数,返回函数调用点,继续向下执行。
      

  11.   

    他要的是在Test()方法调用时,能从f1中的一个语句直接跳出f2执行System.out.println("Test"); 所以要说地球版java做不到.如果是C倒可以算出f2的返回地址直接跳到那个地址去执行,但地球版Java做不到
      

  12.   


    的确!要实现同样功能的话不如将func1和func2合并:
    public class Test { 
        public void func() { 
            for(int i = 0;i <10;i++) { 
                if(i==4) { 
                  return;
                  } 
                System.our.println("func1");  
            } 
            System.out.println("func2"); 
        }     Test() { 
            func(); 
            System.out.println("Test"); 
            …… 
        }     public stativ void main(String [] args) { 
            new Test(); 
        } 
    }
      

  13.   

    这样做是可以解决这个当前这个问题,如果是3重4重5重甚至更多重嵌套调用要回到任意一重接着执行呢?如果再合并那就不用调用了吧。
    以前不知是从书上看的还说论坛上有人说java很自由呢,现在算是看透了。
      

  14.   

    java语言本身没有错,最重要的还是程序的结构设计如果是多重嵌套的话,可以在嵌套方法里利用标志位判断使用return,比如:public class Test { 
        boolean test=false; //设一个标志位
        public void func1() { 
            for(int i = 0;i <10;i++) { 
                if(i==4) { 
                test=true;
                return;
                } 
                System.out.println("func1");  
            } 
        }     public void func2() { 
            func1(); 
            if(test) return;//判断
            System.out.println("func2"); 
        }     Test() { 
            func2(); 
            System.out.println("Test"); 
            …… 
        }     public static void main(String [] args) { 
            new Test(); 
        } 
    }这样就要增加一些变量了