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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王浩龙 中级黑马   /  2014-3-16 08:54  /  800 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王浩龙 于 2014-3-16 08:57 编辑


  1. <p align="left">public class FileReaderTest {

  2.         public static void main(String[] args) throws IOException {
  3.                 FileReader fr = new FileReader("Demo.txt");//关联读的文件里边只有a回车b
  4.          int num = -1;
  5.                 while((num =fr.read())!=-1){
  6.                         System.out.println(num);把读到的每个字符对应的数字打印出来。
  7. }
  8.         }
  9. }</p>
复制代码

打印结果是
97
13
10
98
可以看出fr.read()是把回车键当作两个字符来看的
如果我把  System.out.println(num);变成  System.out.print((char)num);
打印结果是:
a
b
这里又把2个字符合并成一个回车了这是为什么呢?

QQ截图20140316084429.png (11.44 KB, 下载次数: 2)

我的Demo.txt文件

我的Demo.txt文件

评分

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

查看全部评分

3 个回复

倒序浏览
因为LZ你的换行符是 \r\n  \r 回车,回到当前行的行首,而不会换到下一行;
\n  换行,换到当前位置的下一行,而不会回到行首; \r的ASCII码是13 \n的ASCII码是10

评分

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

查看全部评分

回复 使用道具 举报
num的类型是int类型,打印输出的时候会直接输出整数,如果需要字符的话需要转换一下:System.out.println((char)num);
回复 使用道具 举报
第一个打印的是Int型,当输出时会将每个字符对应的ASCII码值打印在控制台上,第二个对int型的num强制转换成了字符型,windows会将13和10两个ASCII值转换成回车符输出在控制台上

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马