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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class MyBufferedInputStream
  2. {
  3.         private InputStream ips;
  4.         byte[] buf=new byte[1024];
  5.         int pos=0,count=0;
  6.         MyBufferedInputStream(InputStream ips)
  7.         {
  8.                 this.ips=ips;
  9.         }
  10.         //一次读一个字节,从缓冲区获取
  11.         public int myRead()throws IOException
  12.         {
  13.                 if(count==0)
  14.                 {
  15.                         //将读取到的字节存入buf数组,并将个数赋值给count计数器。
  16.                         count=ips.read(buf);
  17.                         if(count<0)//当然有可能小于零,读到第1024个之后,count自减到零,再读,后面没有数据了,所以,就是-1了。
  18.                                 return -1;
  19.                         pos=0;//自增到1024之后清零
  20.                         byte b=buf[pos];
  21.                         pos++;
  22.                         count--;
  23.                         return b&255;
  24.                 }
  25.                 else if(count>0)
  26.                 {
  27.                         byte b=buf[pos];
  28.                         pos++;
  29.                         count--;
  30.                         return b&0xff;
  31.                 }
  32.                 return -1;
  33.                
  34.         }
  35.         public void myClose()throws IOException
  36.         {
  37.                 ips.close();
  38.         }
  39. }
复制代码
在myRead方法中,if和else中已经把情况都考虑到了,也就是一定会有返回值,为什么最后还要加一个return -1呢?不返回,编译失败。
隐隐感到和函数的语法有关,但是真心是小白的程度,望大神勿喷。。

评分

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

查看全部评分

7 个回复

倒序浏览
你这样满足条件才有返回  要是不满足就没有 也就是说 你缺少返回值  吧
回复 使用道具 举报
tanzhixue 发表于 2015-5-7 19:08
你这样满足条件才有返回  要是不满足就没有 也就是说 你缺少返回值  吧

count大于、小于还有等于0的情况都有考虑的,所以我觉得一定会有返回值,就觉得没必要在写最后的return了 。。。
回复 使用道具 举报
你可以这么想  当加载到你的函数时候  他先判断是不是有返回值的 函数,这时候,还没读条件  它没找到返回值 就报错了
回复 使用道具 举报
你们看代码都很快吧= =我半天才能看完
回复 使用道具 举报
tanzhixue 发表于 2015-5-8 00:54
你可以这么想  当加载到你的函数时候  他先判断是不是有返回值的 函数,这时候,还没读条件  它没找到返回 ...

它应该是一句一句读的吧?我和朋友讨论了下,觉得应该是异常的原因,如果真有异常抛出,后面的if就读不到,就没有返回值 ,但是return一定会执行,所以要加上return,保证函数有返回值的。。参考下。。
回复 使用道具 举报
殃金咒 发表于 2015-5-8 01:34
你们看代码都很快吧= =我半天才能看完

我估计和你一个速度。。基础很薄,一点一点啃。。
回复 使用道具 举报
看不懂,没学过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马