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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

mport java.io.*;

public class MyBufferedInputStream {
        private InputStream in;
        private byte[] buf = new byte[1024];
        private int count;
        private int pos;

        MyBufferedInputStream(InputStream in) {
                this.in = in;
        }

        public int myRead() throws IOException {
                if (count == 0) {
                        count = in.read(buf);
                        if(count<0)
                                return -1;
                        pos = 0;
                        byte b = buf[pos];
                        count--;
                        pos++;
                        return b&255;
                }
                if (count > 0) {
                        byte b = buf[pos];
                        count--;
                        pos++;
                        return b&0xff;
                }
                return -1;
        }

        public void myClose() throws IOException {
                in.close();
        }
}
上面的程序中:if(count==0)才会执行语句块中的语句,怎么里面又有一个if(count<0) ??????

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
if (count == 0) {//这里的count不是全局的变量么
                        count = in.read(buf);//这里你又重新赋值了啊。根据业务需要,我们当然有不同的判断嘛
                        if(count<0)
                                return -1;
                        pos = 0;
                        byte b = buf[pos];
                        count--;
                        pos++;
                        return b&255;
                }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
    if (count == 0) {
                         count = in.read(buf);
                         if(count<0)
                                 return -1;
                         pos = 0;
                         byte b = buf[pos];
                         count--;
                         pos++;
                         return b&255;
                 }对这两个判断语句,判断count==0的目的是:看是否从流中读取了数据,ifcount==0,说明没有读取数据,接下来就要开始读取数据了,通过count = in.read(buf)将读取的字节数赋给count;count<0,是为了防止通过count--使count的值小于0,如果count<0,就return -1;来终止读取,这是我的理解。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
王少雷 发表于 2013-1-22 19:21
if (count == 0) {//这里的count不是全局的变量么
                        count = in.read(buf);//这里你 ...

嗯 ,谢谢,你这样说理解起来比较容易了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马