A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘建宇 黑马帝   /  2011-11-17 14:55  /  4398 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
}
}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

5 个回复

倒序浏览
\r\n是回车换行符,没法文字后面直接加上,直接加上会认为是两个字符'\'和'r',或者是'\'和'n',所以直接加会执行else语句,键入一个enter换行符它又会走if语句。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
楼主是用记事本敲出来的\r吧? 记事本不会把他们看作一体,而是看作两个独立的字符'\\' 和 'r'

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
\r\n是回车换行符是程序默认的,如果人为的加入程序会认为是其自身的一部分,所以才会出现楼主说的那种情况!

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
谢谢各位的解答 明白鸟
回复 使用道具 举报
咪咪 黑马帝 2011-11-17 16:36:54
地板
因为windows中存储回车符是两个字符即:\r\n   而你if(len="\n")当然不行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马