黑马程序员技术交流社区
标题:
自己写了个LineNumberReader类里的myReadLine方法
[打印本页]
作者:
嘿嘿小学徒
时间:
2012-12-29 18:04
标题:
自己写了个LineNumberReader类里的myReadLine方法
public static String myReadLine(Reader r) throws IOException{
/*
* 思路是定义一个数组,固定长度,一个字节一个字节read,
* 当数组被占满后 添加加到字符串s的后面,
* 当read到一个10(测试机器是linux系统,'\n'换行)后,返回s给调用处
*/
int index=0; //数组的下标
StringBuilder s=new StringBuilder(); //String会多次开辟内存,StringBuilder效率较高
char[] c=new char[3]; //数组长度设置为较小值,用于测试方便
int car; //装载每次read()进来的字符;
while((car=r.read())!=10){
if(car==-1){
return null;
}
c[index]=(char)car;
index++; //数组下标自增
if(index==3){
index=0; //初始化下标
s.append(c); //数组装满一次,就往字符串里添加一次
}
}
c[index]='\0'; //此处一定注意,给数组加一个结束标志
s.append(c); //添加上最后一次没装满的数组.
return s.toString();
}
复制代码
作者:
嘿嘿小学徒
时间:
2012-12-29 21:03
傻了.. 学了数组 就只会用数组... 这个例子完全可以不用的...- -|||
StringBuilder s=new StringBuilder();
int car;
while((car=r.read())!=10&&car!=-1){
s.append((char)car); //car不转成char的话,添加到s里的都将会变成数字
}
if(car==-1)
return null;
else
return s.toString();
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2