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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmlovewhr 中级黑马   /  2013-7-31 20:54  /  1859 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-8-1 18:52 编辑

import java.io.*;
public class Test5
{
public static void main(String[] args)throws IOException
{
  // TODO Auto-generated method stub
  FileReader fr=new FileReader("f:\\1.txt");
  char []arr=new char[1024];
  int num=0;
  while((num=fr.read(arr))!=-1)
  {
   System.out.println("hello world");
  }   
  
  fr.close();
}
}
这段程序中,有一个while循环,可是运行的结果,只有一句hello world.这是为什么,不太明白?

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

8 个回复

倒序浏览
你的1.txt中的内容太少了,一次就读完了。
回复 使用道具 举报
只能是楼上的解释了
回复 使用道具 举报

  1. import java.io.*;
  2. public class Test5
  3. {
  4. public static void main(String[] args)throws IOException
  5. {
  6.   // TODO Auto-generated method stub
  7.   FileReader fr=new FileReader("f:\\1.txt");
  8.   char []arr=new char[1024];//因为你的文件里面的内容太少了,都不够1024个字符。因为他每次都会在文件中读取1024个字符,你文件中不够1024或者等于1024字符就只能循环一次,如果你把多多的字符存进去在试试就知道打印几次了
  9.   int num=0;
  10.   while((num=fr.read(arr))!=-1)
  11.   {
  12.    System.out.println("hello world");
  13.   }   
  14.   
  15.   fr.close();
  16. }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
冒烟的芒果 发表于 2013-7-31 21:03
你的1.txt中的内容太少了,一次就读完了。

如果我打印的是System.out.println(arr);你看下运行结果是怎么样的?你就不会说是一次读完的了
回复 使用道具 举报
你的while循环里面应该要写这句,System.out.println(new String(arr,0,num)); 才会显示你的1.txt里面的内容吧。你那样写的意思是满足((num=fr.read(arr))!=-1)这个条件,既1.txt里面有东西,然后直接打印 hello world. 没有打印1.txt里面的内容。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
qmlovewhr 发表于 2013-7-31 21:20
如果我打印的是System.out.println(arr);你看下运行结果是怎么样的?你就不会说是一次读完的了
...

那你打印出来看看,我这边用3K的文件测试了,有三个hello world。一次读 1k,不知道你那个1.txt有多大

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
1楼应该是正解
回复 使用道具 举报
本帖最后由 影响力147753321 于 2013-8-1 13:10 编辑

这是一个有条件的循环,打印了说明。第一次判断条件满足,只打印一次说明,第二次条件不满足。也就是说第一次
num=fr.read(arr))!=--1,文件没有读到末尾。第二次num=fr.read(arr))=-1,文件刚好读到末尾。这只是一种巧合。实际就是文件太小,一次读完了。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马