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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 征服 中级黑马   /  2014-4-1 17:22  /  1054 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 征服 于 2014-4-3 08:58 编辑

这是怎么回事?我的运行结果出现那么多问号?求解,谢谢!
import java.io.*;
class FileReaderDemo
{
        public static void main(String[] args) throws IOException
        {
                FileWriter fw=new FileWriter("demo.txt");
                fw.write("abcdef");
                fw.close();
                //创建一个文件读取流对象,和指定名称的文件相关联。
                FileReader fr=new FileReader("demo.txt");
                int ch1=0;
                while((ch1=fr.read())!=0)
                {
                        System.out.println("ch1="+(char)ch1);
                }
                fr.close();//关闭流
        }
}

结果如下:
D:\Java\EditPlus\old files>java FileReaderDemo
ch1=a
ch1=b
ch1=c
ch1=d
ch1=e
ch1=f
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?
ch1=?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

3 个回复

倒序浏览
你写入的是abcdef在demo.txt中,当你读数据的时候,你写的是ch1=fr.read())!=0,这是一个死循环,应该写成ch1=fr.read())!=-1,就会只读abcdef

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
楼上正解,java中,通过判断是否为-1,来判断是否已读到文件的结尾!这个知识点在毕老师的基础视频第18天的课程中有详细介绍~

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
谢谢!已经修改,得出正确结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马