黑马程序员技术交流社区

标题: 不知我的 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