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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public static String myReadLine(Reader r) throws IOException{
  2.         
  3.         /*
  4.          *  思路是定义一个数组,固定长度,一个字节一个字节read,
  5.          *  当数组被占满后 添加加到字符串s的后面,
  6.          *  当read到一个10(测试机器是linux系统,'\n'换行)后,返回s给调用处
  7.          */
  8.         
  9.         int index=0;  //数组的下标
  10.         StringBuilder s=new StringBuilder(); //String会多次开辟内存,StringBuilder效率较高
  11.         char[] c=new char[3]; //数组长度设置为较小值,用于测试方便
  12.         int car; //装载每次read()进来的字符;
  13.         while((car=r.read())!=10){
  14.             if(car==-1){
  15.                 return null;
  16.             }
  17.             c[index]=(char)car;
  18.             index++; //数组下标自增
  19.             if(index==3){
  20.                 index=0; //初始化下标
  21.                 s.append(c); //数组装满一次,就往字符串里添加一次
  22.             }
  23.         }
  24.         c[index]='\0';  //此处一定注意,给数组加一个结束标志
  25.         s.append(c); //添加上最后一次没装满的数组.
  26.         
  27.         return s.toString();
  28.         
  29.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 鼓励

查看全部评分

1 个回复

倒序浏览
傻了.. 学了数组 就只会用数组...  这个例子完全可以不用的...- -|||
  1. StringBuilder s=new StringBuilder();
  2.         
  3.         int car;
  4.         while((car=r.read())!=10&&car!=-1){           
  5.             s.append((char)car);  //car不转成char的话,添加到s里的都将会变成数字
  6.         }
  7.         if(car==-1)
  8.             return null;
  9.         else
  10.             return s.toString();
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马