黑马程序员技术交流社区
标题:
不知我的 MyLineNumberReader (自定义)问题在哪?
[打印本页]
作者:
黑马李刚
时间:
2011-9-4 11:34
标题:
不知我的 MyLineNumberReader (自定义)问题在哪?
编译运行,都没有报错,就是命令行没有结果输出。
[code=java]import java.io.*;
class L
{
public static void main(String args[]) throws IOException
{
FileReader fr=new FileReader("L.java");
MyLineNumberReader mlnr=new MyLineNumberReader(fr);
String line=null;
while((line=mlnr.myReadLine())!=null)
{
System.out.println(mlnr.myGetLineNumber()+" "+line);
}
mlnr.myClose();
System.out.println("love");
}
}
class MyLineNumberReader
{
private int lineNumber=0;
private FileReader fr;
MyLineNumberReader(FileReader fr)
{
this.fr=fr;
}
public String myReadLine() throws IOException
{
lineNumber++;
StringBuilder sb=new StringBuilder();
int ch=0;
while((ch=fr.read())!=-1)
{
if((ch=fr.read())=='\r')
continue;
if((ch=fr.read())=='\n')
return sb.toString();
else
sb.append((char)ch);
}
return null;
}
public int myGetLineNumber()
{
return lineNumber;
}
public void myClose() throws IOException
{
fr.close();
}
}[/code]
作者:
匿名
时间:
2011-9-4 12:20
FileReader fr=new FileReader("L.java");
if(!fr.exist) {
system.out.println("file is not exist");
}
看看你存在不,另外在36打个断点,那里好像有点问题。
lineNumber应该是static的
此电脑只提供上网.... 故无法测试
作者:
匿名
时间:
2011-9-4 12:24
应该是36行出错了,检测到'\r'之后又重新循环,文件每行结束都有一个'\r''n',你的程序contiue后就没再往后执行了。有个类叫bufferedReader,可以直接读取一行,感觉比较适合用在这里
作者:
匿名
时间:
2011-9-4 13:02
相对路径错了,需要加上L.JAVA文件所在文件夹,也就是“(文件所在文件夹名)/L.java”就可以了,不如我的L.java文件放在src文件夹中,上面语句改为FileReader fr=new FileReader("src/L.java");就ok了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2