黑马程序员技术交流社区

标题: FileReader中的问题 [打印本页]

作者: 侯丛政    时间: 2013-2-10 19:44
标题: FileReader中的问题
本帖最后由 侯丛政 于 2013-2-11 16:05 编辑

不明白两种情况为什么出现不同的结果, 情况一问题出在哪儿?  (我用两种方式读取同一个TXT文件, 里面是Hello)
情况一:
                int num = 0;
                while(fr.read() != -1){
                        num = fr.read();
                        System.out.print((char)num);     // 结果为: el
                                                                                           ?
                      }

情况二:
                nt num = 0;
                while((num = fr.read()) != -1){
                        System.out.print((char)num);   // 结果为: Hello
                }




作者: 许鑫星    时间: 2013-2-10 19:57
因为第一个里你在判断里读取了一次文件,在循环体里又读了一次,但是只打印了在循环中读到的字符,所以表现出来是间隔打印。。。。
作者: 夏振博    时间: 2013-2-10 21:10
//这里第一次循环读取一个字符h, 但是没有赋值,
while(fr.read() != -1){
//这里也是第一次循环内,又读取了一个字符e, 赋值给num
num = fr.read();
//这里打印强转后的的变量也就是e,  总结就是一个循环拿到两个字符,打印第二个拿到的字符,上面红字是原因
System.out.print((char)num);
作者: 胡发友    时间: 2013-2-11 14:59
在第一个方法中,打印的num的值,而num=fr.read();这句话的意思是只读取一次,读一次就结束了
在第二个方法中,你是将read放在循环体中,也就是说,read都不到结束标签,这个循环就不停的都取数据

所以两个方法读取的结果不同
作者: 胡发友    时间: 2013-2-11 14:59
在第一个方法中,打印的num的值,而num=fr.read();这句话的意思是只读取一次,读一次就结束了
在第二个方法中,你是将read放在循环体中,也就是说,read都不到结束标签,这个循环就不停的都取数据

所以两个方法读取的结果不同




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