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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏亮 中级黑马   /  2012-11-6 17:38  /  1456 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 魏亮 于 2012-11-7 08:03 编辑

import java.io.*;import java.util.*;class MyBufferedReaderDemo {        public static void main(String[] args) throws Exception        {                MyBufferedReader mybufr = new MyBufferedReader(new FileReader("day.txt"));                String line=null;                while ((line=mybufr.readLine())!=null)                {                        System.out.println(line);                }                mybufr.myClose();                //System.out.println("Hello World!");        }}可为什么用上面的类调用,老是出错呢,好像打出了很多空字符!!


class MyBufferedReader
{
        private Reader r;
        MyBufferedReader(Reader r)
        {
                this.r=r;
        }
        public String readLine() throws Exception
        {
                char[] chs = new char[1024];//定义一个数组装数据
                int pos=0;
        
                int ch=0;
               
                while ((ch=r.read())!=-1)
                {
                        if (ch=='\r')
                        {
                                continue;
                        }
                        if (ch=='\n')
                        {
                                System.out.println(pos);

                                //return Arrays.toString(chs);
                                return new String(chs,0,pos);//将数据返回,pos正好是数组中元素的个数?
                        }
        
                        chs[pos++]=(char)ch;
                }
                if (chs.length!=0)
                {
                        
                        return new String(chs,0,pos);
                }
                return null;

        }
        public void myClose() throws Exception
        {
                r.close();
        }
        
}
//模拟BufferedReader内部结构, 为什么调用运行上面那个类会打印出一大堆的空字符呢??
//我return的时候明明定义了是0-pos 呀?









评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

1 个回复

倒序浏览
本帖最后由 齐连涛 于 2012-11-6 18:16 编辑

               while ((ch=r.read())!=-1)
                {
                        if (ch=='\r')
                        {
                                continue;
                        }
                        if (ch=='\n')
                        {
                                System.out.println(pos);

                                //return Arrays.toString(chs);
                                return new String(chs,0,pos);//将数据返回,pos正好是数组中元素的个数?
                        }
                     else  //加个else
                             chs[pos++]=(char)ch;
                }


自己看看逻辑

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马