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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爽亮前程 中级黑马   /  2014-11-20 21:05  /  1108 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 爽亮前程 于 2014-11-20 21:11 编辑
  1. <p>import java.io.FileReader;
  2. import java.io.IOException;
  3. public class StringTest5 {
  4. public static void main(String[] args) throws IOException {
  5.   FileReader fr = new FileReader("d:\\1.txt");
  6.   while (fr.read() != -1) {
  7.       
  8.    System.out.print((char)fr.read());
  9.   }
  10. }
  11. }</p><p> </p><p> </p><p> </p><p>
  12. import java.io.FileReader;
  13. import java.io.IOException;
  14. public class StringTest5 {
  15.         public static void main(String[] args) throws IOException {
  16.                 FileReader fr = new FileReader("d:\\1.txt");
  17.                 int ch=0;
  18.                 while ((ch=fr.read()) != -1) {
  19.                                                 
  20.                         System.out.print((char)ch);
  21.                 }

  22.         }
  23. }</p>
复制代码
}各位大神,请问第一段代码和第二段代码有什么区别吗?
为什么第一段代码操作读取的文字会乱码,第二个则正常呢?

7 个回复

倒序浏览
第一段代码read()方法一个循环你调用2次 只打印了一次 相当于只输出一半
回复 使用道具 举报 1 0
这是因为你在调用read()方法是会执行一个类似迭代器里面hasNext()和next()的执行效果,说白了也就是你的第一段代码里两次调用的read()方法已经不是指向同一个字符了.
回复 使用道具 举报
调用了两次,read()方法会自动读下一个
回复 使用道具 举报 1 0
第一个你在while判断条件里读了一次,又在while体内读了一次,但你只打印了一次。所以就是乱码咯
回复 使用道具 举报
郑飞 发表于 2014-11-20 21:17
第一段代码read()方法一个循环你调用2次 只打印了一次 相当于只输出一半

哦、想明白了。多谢啦。
回复 使用道具 举报
郑飞 发表于 2014-11-20 21:17
第一段代码read()方法一个循环你调用2次 只打印了一次 相当于只输出一半

明白了。谢谢啦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马