黑马程序员技术交流社区

标题: 关于num=fr.read(buf))!=-1的问题 [打印本页]

作者: atlas    时间: 2014-10-13 15:17
标题: 关于num=fr.read(buf))!=-1的问题
  1. /*
  2. 第二种方式:通过字符数组进行读取。
  3. */
  4. public class test {
  5.         public static void main(String[] args) throws Exception {
  6.                 FileReader fr = new FileReader("e:\\demo.txt");
  7.                 //定义一个字符数组。用于存储读到的字符。
  8.                 //该read(char[])返回的是讲到字符个数。
  9.                 char[] buf = new char[3];
  10.                 int num = 0;
  11.                 while((num=fr.read(buf))!=-1){
  12.                         sop(new String(buf,0,num));
  13.                 }
  14.         }
  15.        
  16.        
  17.         public static void sop(Object obj){
  18.                 System.out.println(obj);
  19.         }
  20. }
复制代码

代码如上,(num=fr.read(buf))!=-1,为什么会让它不等于-1呢,这个-1什么情况下出现。
作者: SelonLiao    时间: 2014-10-13 15:36
判断循环条件是否等于 -1 ,主要是因为  read()  方法
你使用的是 read( char[] ) 方法 ,  那么在读取数据时会返回相应的字符个数,  如果没有读到数据,则会返回 -1
在正常运行的情况下,read() 方法只要没有读取到数据的时候都会返回 -1
这也是什么在写循环条件时 要判断是否为 -1 的情况




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