黑马程序员技术交流社区
标题:
定义的方法myReadLine()
[打印本页]
作者:
李海鹏
时间:
2012-12-29 10:50
标题:
定义的方法myReadLine()
public String myReadLine() throws IOException
{
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch=r.read())!=-1)
{
if(ch=='\r')
{
continue;
}
if(ch=='\n')
{
return sb.toString();
}
else
{
sb.append((char)ch);
}
}
return null;
}
为什么这个方法不能读出最后一行?求解……
作者:
依然AI
时间:
2012-12-29 11:02
本帖最后由 依然AI 于 2012-12-29 11:15 编辑
public String myRead() throws IOException{
int c=0;
count++;
StringBuilder sb=new StringBuilder();
while((c=fr.read())!=-1){
if(c=='\r')continue;
if(c=='\n'){
return sb.toString();
}
else sb.append((char)c);
}
if(sb.length()!=0){
return sb.toString();
}
return null;
}
复制代码
最后一行读到末尾是-1没有读到ch=='\n'的 就直接返回-1了 这样就直接跳出while循环了 就return null;
在while循环外边加上这个就好了if(sb.length()!=0)return sb.toString();
这样就是判断下ch!='\n' 也会返回值 就能读到最后一行了
作者:
李海鹏
时间:
2012-12-29 11:37
依然AI 发表于 2012-12-29 11:02
最后一行读到末尾是-1没有读到ch=='\n'的 就直接返回-1了 这样就直接跳出while循环了 就return null;
在whi ...
明白了谢谢
作者:
郝福明
时间:
2012-12-29 18:10
public String myReadLine()throws Exception{
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch = r.read()) != -1){
if(ch == '\r'){
continue;
}if(ch == '\n'){
return sb.toString();
}else{
sb.append((char)ch);
}
}
if(sb.length()!=0){
return sb.toString();
}
return null;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2