请看代码!~:

代码1:
public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
return i;
return j;                            //错误在于两个return无法返回!~~j;
}
}代码2: public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
if(i == 1) {
return i;                                                  //语句正确!~ 虽然有两个return,
}
return j;
}
}代码3: public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 2;
if(true) {
return i;                                    //代码竟然错误!~ 只不过将   i == 1  换为了 true!~ 不明白为什么影响了!
}
return j;
}
}
代码4:public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 5;
while( i >= 1) {
i ++;
return i;                                          //将 i ++ 一次的值返了回去!~  并不再往下执行?。 那到底有没有往下执行呢?
}
return j;
}
}
代码5: public class Test5 {
public static void main(String [] args) {
Test5 test = new Test5();
System.out.println(test.test());
}
public int test() {
int i = 1;
int j = 5;
while(true) {
i ++;
return i;                  //还是同样的语句!~ 只是换成了true  "return j;" 变成了无法访问!~ 为什么会出现这样的情况呢?
}
return j;
}
}

解决方案 »

  1.   

    楼主,
    你想做什么呢?return 两个值?
      

  2.   


    为什么在这种条件true的情况下, 两个return  不会受到影响?.  
    而为什么直接写两个return 就会受到影响呢?>..
    希望大家也将自己的疑问代码帖出来分享!~  并解决心中疑问!~~~
      

  3.   

    return  当然只能返回!一个值了 !~
    我是不明白的是 !~ 在这种加了条件的 return 为什么可以写两个呢 ?.
      

  4.   

    return 后面的语句是不能被执行到的
      

  5.   

    下面是个人观点:不当之处请指出:
    一个方法是中是不能有两个编译就能确定的return 语句的
    回:
    代码 2 , 3 的比较
    if(i == 1) 这个是否为true 只有在运行是才知道。给i付值是运行时刻做的事情。
    if(true)   这个编译就能确定 。 
    回 :
    代码4
    没有往下执行, 第一个return 跳出循环,结束方法。
    代码5 的原因同 2,3的一样。
      

  6.   

    按照编译器自己检查的,while(true)肯定能进入 -> 肯定能执行 return i  ->肯定在这里函数能够返回了 -> return j;肯定执行不到这个涉及到编译原理的内容,结果取决于编译器如何优化代码,楼主不要深究了
      

  7.   

    public class Test5 {
        public static void main(String [] args) {
            Test5 test = new Test5();
            System.out.println(test.test());
        }
        public int test() {
            int i = 1;
            int j = 2;    
            return i;
            return j;                            //错误在于两个return无法返回!~~j;
        }
    }
    楼主有没有运行过,有没有看过编译错误!!!if(true)return i;
    return j;这个有些欺骗编译器的感觉
    不过在开发阶段中测试时,真的很好用
      

  8.   

    java编译器会提前判断你的return是否会执行,假如永远不会执行,那么就报错了
      

  9.   


    由以上的程序运行的结果来看:执行到语句return 之后, 后面就开始检查 "}" , 如果没有发现 , 所有的语句进行栈的处理 ,报出错误,