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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 薆情媬証書 中级黑马   /  2013-10-15 23:50  /  1178 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 薆情媬証書 于 2013-10-16 11:52 编辑

有如下段代码,求教,这些return到底是怎么回事?应该返回哪个呢?
下面代码中这么多return,到底怎么返回呢,最外层的两个return中,
如果进了if (sb.length() != 0)
    return sb.toString();这个语句,还返回下面的null吗?

  1. <p>public String myReaderLine()throws IOException
  2. {
  3.   int len = 0;
  4.   StringBuilder sb = new StringBuilder();
  5.   while ((len = fr.read()) != -1)
  6.   {
  7.    if ((char)len == '\r')
  8.     continue;
  9.    if((char)len == '\n')
  10.     return sb.toString();
  11.    sb.append((char)len);
  12.   }
  13.   if (sb.length() != 0)
  14.     return sb.toString();
  15.   return null;
  16. } </p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

4 个回复

倒序浏览
一执行return语句,函数体就结束了,满足条件return了sb.toString(),函数就结束了,当然不return null
回复 使用道具 举报
哪个条件为真了则返回那个,例如if((char)len == '\n')   return sb.toString(); 如果(char)len == '\n'为真则返回sb.toString();
如果进了if (sb.length() != 0)return sb.toString();这个语句,还返回下面的null吗?不会, 因为这个函数已经返回sb.toString()了,下面的代码将不会执行了。
回复 使用道具 举报

  1. <p>public String myReaderLine()throws IOException
  2. {
  3.   int len = 0;
  4.   StringBuilder sb = new StringBuilder();
  5.   while ((len = fr.read()) != -1)
  6.   {
  7.    if ((char)len == '\r')                  //如果是 ‘\r’跳出这次循环。
  8.     continue;
  9.    if((char)len == '\n')                 //如果是'\返回sb的转成String类型的样子
  10.     return sb.toString();
  11.    sb.append((char)len);             //如果不是上面的两种情况,sb的后面读取到的内容(readline()读到的)
  12.   }
  13.   if (sb.length() != 0)                //到读到文件末尾返回 sb的String类型
  14.     return sb.toString();
  15.   return null;              //如果没有这句话,会提示不是每种情况都有返回值
  16. } </p>
复制代码
所有的解释都在注解上

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1

查看全部评分

回复 使用道具 举报
谢谢亲们!!睡了一觉,弄懂了!!呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马