黑马程序员技术交流社区
标题:
大家帮解释一下原因吧。
[打印本页]
作者:
李哲
时间:
2012-3-22 11:09
标题:
大家帮解释一下原因吧。
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("demo.txt ");//文件内容:abedg
for (int ch=0;(ch=fr.read())!=-1; )
{
System.out.println((char)ch);
}
/*
for (;fr.read()!=-1; )
{
System.out.println((char)fr.read());
}
*/
}
}
上面的两个for循环差别很大吗?为什么结果很不一样?什么原因?
作者:
杨朝辉
时间:
2012-3-22 11:17
第二个for循环中,一次循环调用了两次fr.read(),判断条件中读取了一个字符,输出语句中输出的是下一个字符。
作者:
刘元明
时间:
2012-3-22 13:14
for (int ch=0;(ch=fr.read())!=-1; )//一次循环你只调用了一次read()方法 {
System.out.println((char)ch);
}
/*而在下边这个循环中你调用了两次read()方法,且两次读的字符不一样
for (;fr.read()!=-1; )
{
System.out.println((char)fr.read());
}
*/
作者:
周建
时间:
2012-3-22 15:45
楼上正解
作者:
唐朋
时间:
2012-3-22 16:27
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("demo.txt ");//文件内容:abedg
这种方法表示读取一个字符,把读取的结果存如ch里,是读取一个,打印一个
for (int ch=0;(ch=fr.read())!=-1; )
{
System.out.println((char)ch);
}
/*
此种方法是读取一个字符
for (;fr.read()!=-1; )
{
从循环的结果后面再读一个字符进行打印,
System.out.println((char)fr.read());
}
*/
}
}
第一种方式是读取什么打印什么,第二种方式是隔一个字符进行打印
作者:
OMG
时间:
2012-3-22 20:11
for (;fr.read()!=-1; ) {
从循环的结果后面再读一个字符进行打印,
System.out.println((char)fr.read())
}
这个循环细节:
1,初始化 空
2,循环条件 fr.read()!=-1 不同与x<10 已经读取了一次
3,执行语句 System.out.println((char)fr.read()) 先读取再打印刚读取的字符
4,执行后的操作 空
总结:一次循环,两次读取,一次打印,所以会有一半的字符被丢弃;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2