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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯丛政 中级黑马   /  2013-2-10 19:44  /  1465 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 侯丛政 于 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
                }



4 个回复

倒序浏览
因为第一个里你在判断里读取了一次文件,在循环体里又读了一次,但是只打印了在循环中读到的字符,所以表现出来是间隔打印。。。。
回复 使用道具 举报
//这里第一次循环读取一个字符h, 但是没有赋值,
while(fr.read() != -1){
//这里也是第一次循环内,又读取了一个字符e, 赋值给num
num = fr.read();
//这里打印强转后的的变量也就是e,  总结就是一个循环拿到两个字符,打印第二个拿到的字符,上面红字是原因
System.out.print((char)num);
回复 使用道具 举报
在第一个方法中,打印的num的值,而num=fr.read();这句话的意思是只读取一次,读一次就结束了
在第二个方法中,你是将read放在循环体中,也就是说,read都不到结束标签,这个循环就不停的都取数据

所以两个方法读取的结果不同
回复 使用道具 举报
在第一个方法中,打印的num的值,而num=fr.read();这句话的意思是只读取一次,读一次就结束了
在第二个方法中,你是将read放在循环体中,也就是说,read都不到结束标签,这个循环就不停的都取数据

所以两个方法读取的结果不同
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马