黑马程序员技术交流社区
标题:
自定义的字符输入流包装类,停不下来,请大神帮忙给看看
[打印本页]
作者:
jiao731097245
时间:
2015-11-11 15:47
标题:
自定义的字符输入流包装类,停不下来,请大神帮忙给看看
本帖最后由 jiao731097245 于 2015-11-11 16:53 编辑
请大神帮忙看看,<span style="line-height: 2.2em;">写了一个自定义字符流的包装类,感觉判断的都没错,程序就是停不下来。。。</span>
复制代码
作者:
jiao731097245
时间:
2015-11-11 15:50
刚才代码没粘上
import java.io.*;
class Test12
{
public static void main(String[] args) throws IOException
{
MyBufferedReader mbr=new MyBufferedReader(new FileReader("D:\\Test12.java"));
String line=null;
while((line=mbr.myReadLine())!=null){
System.out.println(mbr.getLineNumber()+":"+line);
}
mbr.close();
}
}
class MyBufferedReader
{
private Reader r;
int line=0;
MyBufferedReader(Reader r){
this.r=r;
}
public String myReadLine()throws IOException{
line++;
StringBuilder sb=new StringBuilder();
int len=0;
while((len=r.read())!=-1){
if(len=='\r')
continue;
else if(len=='\n')
return sb.toString();
else
sb.append(((char)len));
}
if(sb!=null)
return sb.toString();
return null;
}
public int getLineNumber(){
return line;
}
public void setLineNumber(int line){
this.line=line;
}
public void close()throws IOException{
r.close();
}
}
复制代码
作者:
海狮
时间:
2015-11-11 16:29
错误在36行
if(sb!=null)
return sb.toString();
return null;
不是sb!=null
是sb.length()!=0
你在前面声明变量的时候,已经给sb赋值了
StringBuilder sb=new StringBuilder();
这个情况下sb是永远不会等于null
你的程序就永远不会停了
作者:
jiao731097245
时间:
2015-11-11 16:52
海狮 发表于 2015-11-11 16:29
错误在36行
if(sb!=null)
return sb.toString();
运行成功了,太感谢了。 尽管StringBuilder中无元素,但是通过new产生对象了,所以sb不为null,以后记住这个坑了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2