黑马程序员技术交流社区

标题: BufferedReader类中的readline方法 [打印本页]

作者: 刘建宇    时间: 2011-11-17 14:55
标题: BufferedReader类中的readline方法
import java.io.*;
public class MyReadline {//根据readline方法原理,重写readline方法
        private FileReader fr;

public MyReadline(FileReader fr){
                this.fr=fr;
        }
public String readline() throws IOException{
        StringBuffer sb=new StringBuffer();
   
    int len=0;
    while((len=fr.read())!=-1){
            if(len==('\r'))//为什么我在文本文档文字后面人为加上\r或者\n程序不会执行IF语句而是执行else语句呢?而键入一个enter换行符它又会走if语句呢?求指教
                    continue;
            if(len=='\n')
                    return sb.toString();
            else
                sb.append((char)len);
    }  
        if(sb.length()!=0)
            return sb.toString();
        return null;
}
public void mycolse()throws IOException{
        fr.close();
}
}
作者: 张奇云    时间: 2011-11-17 15:11
\r\n是回车换行符,没法文字后面直接加上,直接加上会认为是两个字符'\'和'r',或者是'\'和'n',所以直接加会执行else语句,键入一个enter换行符它又会走if语句。
作者: quanhui    时间: 2011-11-17 15:19
楼主是用记事本敲出来的\r吧? 记事本不会把他们看作一体,而是看作两个独立的字符'\\' 和 'r'
作者: moonlight    时间: 2011-11-17 15:50
\r\n是回车换行符是程序默认的,如果人为的加入程序会认为是其自身的一部分,所以才会出现楼主说的那种情况!
作者: 刘建宇    时间: 2011-11-17 16:21
谢谢各位的解答 明白鸟
作者: 咪咪    时间: 2011-11-17 16:36
因为windows中存储回车符是两个字符即:\r\n   而你if(len="\n")当然不行了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2