A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 会飞的狼 中级黑马   /  2013-8-15 14:29  /  2285 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写过一些程序,在一个方法里面有一个for循环,那么return是不是不能放在循环里面,具体的例子我就没有了

评分

参与人数 1技术分 +1 收起 理由
夜默 + 1

查看全部评分

16 个回复

正序浏览
return 可以放在for 循环里的,用于结束当前的一些操作
回复 使用道具 举报
会飞的狼 发表于 2013-8-15 17:29
你看看上面那个美女的例子,她就是在循环内部return循环内部的定义的变量,照样能打印出来,但是,循环外 ...

呃,表示超出自己知识理解范围,求大神详解,关注之。{:soso_e110:}
回复 使用道具 举报
去掉那个null,肯定是不行的
  1. package cn.java.test;

  2. public class Test {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 forDemo();
  9.         }
  10.         public static void forDemo() {
  11.                 for (int i = 0; i < 5; i++) {
  12.                         System.out.println(i);
  13.                         return;
  14.                 }
  15. //                return null;
  16.         }
  17. }

  18. //运行结果为: 0


复制代码
.因为我的方法是带有返回值的,
带有返回值的方法,是必需要有return语句出现的,
当然,我还可以return;也就是return后面直接跟分号.
带有返回值的方法,是要确保能够执行到return语句的.
而本人的那个forDemo()方法里的循环是在if条件成立的条件下return的,
而万一if条件不为真,那就不执行return语句了,
那么在去掉return null 的情况下,有返回值声明的方法,就成了没有返回值的方法了
这样,编译器是不会让你通过的.

附另一代码:

回复 使用道具 举报
会飞的狼 发表于 2013-8-15 17:31
你去掉return  null  就不行了

那是当然啦,因为你返回的类型,跟方法定义的返回类型不匹配,那是必然报错的
回复 使用道具 举报
sunriselzz 发表于 2013-8-15 17:21
一个方法for循环里是可以放return语句的,但return 语句后面不能再有语句,
原因是会执行不到这一条语句,就返 ...

你去掉return  null  就不行了
回复 使用道具 举报
yangxin540 发表于 2013-8-15 17:24
可以呀然后在主函数中调用,输出的结果就是1,就是返回的是b的值

你去掉那个return  0 试试能不能编译
回复 使用道具 举报
魏先勇 发表于 2013-8-15 17:08
如果要return一种类型的数据,那么要有能够接收它的方法,在循环内部定义的变量,它的作用域仅限于该循环 ...

你看看上面那个美女的例子,她就是在循环内部return循环内部的定义的变量,照样能打印出来,但是,循环外部的return一旦去掉就编译失败,也就是说,一个带有返回值的方法一定要有一个一定会执行的return语句,而在循环内部的return不被定义为必须执行的return,所以会编译失败
回复 使用道具 举报
会飞的狼 发表于 2013-8-15 15:54
我在循环内部定义了一个变量,可以return出去吗?

可以呀
  1. static int test(){
  2.                
  3.                 for(int x=0; x<5; x++){
  4.                         int b = 0;
  5.                         System.out.println(x);
  6.                         b++;
  7.                         return b;
  8.                 }
  9.                 return 0;
  10.         }
复制代码
然后在主函数中调用,输出的结果就是1,就是返回的是b的值
回复 使用道具 举报
一个方法for循环里是可以放return语句的,但return 语句后面不能再有语句,
原因是会执行不到这一条语句,就返回了方法结束!
continue同理!
  1. package cn.java.test;

  2. public class Test {

  3.         /**
  4.          * 写过一些程序,在一个方法里面有一个for循环,那么return是不是不能放在循环里面,具体的例子我就没有了
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 System.out.println(forDemo());
  10.         }

  11.         public static String forDemo() {
  12.                 for (int i = 0; i < 5; i++) {
  13.                         if(2 == i){
  14.                                 return "一个方法for循环里是可以放return语句的";
  15. //                                System.out.println("return 语句后面不能再有语句,原因是会执行不到这一条语句,就返回了方法结束!");
  16.                         }
  17.                 }
  18.                 return null;
  19.         }
  20. }
复制代码
运行结果:  一个方法for循环里是可以放return语句的
回复 使用道具 举报
会飞的狼 发表于 2013-8-15 15:54
我在循环内部定义了一个变量,可以return出去吗?

如果要return一种类型的数据,那么要有能够接收它的方法,在循环内部定义的变量,它的作用域仅限于该循环内。如果在循环内部使用return则没有接收的方法,如果在循环外边使用return则获取不到内部变量。所以是不可以的。
回复 使用道具 举报
会飞的狼 发表于 2013-8-15 16:41
你看看去掉外面那个return sum能不能通过编译

不能的。
回复 使用道具 举报
清心玉质 发表于 2013-8-15 16:29
public static void main(String[] args) {
  // TODO Auto-generated method stub

你看看去掉外面那个return sum能不能通过编译
回复 使用道具 举报
public static void main(String[] args) {
  // TODO Auto-generated method stub

  
  System.out.println("123==="+e.a.printf());

}
static class a{
  
  public static int printf(){
   
   int sum=0;
   for (int b=1;b<3;b++)
   {
    int c=99;
    sum+=b;
         
    return c;
   }
   return sum;
   
   
  }
}
}结果输出是99,所以我觉得是可以return的。


回复 使用道具 举报
yangxin540 发表于 2013-8-15 14:47
这是必然可以的,程序读到return就直接退出循环了

我在循环内部定义了一个变量,可以return出去吗?

回复 使用道具 举报
这是必然可以的,程序读到return就直接退出循环了
  1. for(int x=0; x<5; x++){
  2.                         System.out.println(x);//输出结果为0
  3.                         return;
  4.                 }
复制代码
回复 使用道具 举报
这是可以的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马