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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谜燕 中级黑马   /  2014-3-16 22:32  /  1151 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;

  2. class  CopyTextByBuf
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 BufferedReader bufr = null;
  7.                 BufferedWriter bufw = null;

  8.                 try
  9.                 {
  10.                         bufr = new BufferedReader(new FileReader("BufferedWriterDemo.java"));
  11.                         bufw = new BufferedWriter(new FileWriter("bufWriter_Copy.txt"));

  12.                         //String line = null;

  13.                         while((String line=bufr.readLine())!=null)//就是这个String类型
  14.                         {
  15.                                 bufw.write(line);
  16.                                 bufw.newLine();
  17.                                 bufw.flush();

  18.                         }
  19.                 }
  20.                 catch (IOException e)
  21.                 {
  22.                         throw new RuntimeException("读写失败");
  23.                 }
  24.                 finally
  25.                 {
  26.                         try
  27.                         {
  28.                                 if(bufr!=null)
  29.                                         bufr.close();
  30.                         }
  31.                         catch (IOException e)
  32.                         {
  33.                                 throw new RuntimeException("读取关闭失败");
  34.                         }
  35.                         try
  36.                         {
  37.                                 if(bufw!=null)
  38.                                         bufw.close();
  39.                         }
  40.                         catch (IOException e)
  41.                         {
  42.                                 throw new RuntimeException("写入关闭失败");
  43.                         }
  44.                 }
  45.         }
  46. }
复制代码

为什么那个String类型不能加入到while循环中

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

4 个回复

倒序浏览
String line=bufr.readLine(); 这个是声明变量一条语句,而不是一个能用来做判断值。
(line=bufr.readLine()) !=null;而这个是一个运算语句while才能判断,

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
readline()方法返回一个string类型的值 while(( line=bufr.readLine())!=null)是在做判断告诉你返回值不为空,
前面可以写 String line;while(( line=bufr.readLine())!=null){bufw.write(line);}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
你先要理解while循环的条件,条件的意思是当读取到一行的内容不为空的时候才执行循环体,关键不在于这个String类型上,你可以写为
1、
                        String line = null;
                        while((line=bufr.readLine())!=null)//就是这个String类型
                        {
                                bufw.write(line);
                                bufw.newLine();
                                bufw.flush();

                        }
2:
                       String line = null;

                        while((String line=bufr.readLine())!=null)//就是这个String类型
                        {
                                String str = line;//当然这种做法可是大费周章了
                                bufw.write(str);
                                bufw.newLine();
                                bufw.flush();

                        }

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
while((String line=br.readLine()) != null)
因为while(boolean)循环里面判断的是boolean类型变量,能赋值操作,但不能定义变量。最终要进行true,false判断,赋值只是将br.readLine()返的值赋给line然后拿line来做判断,这样不会改变判断的结果,
但是如果定义变量,你想,将返回的值赋值给定义的String类型的line变量,这明显说不过去
所以,变量要在while循环之前定义好,里面直接赋值就行了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

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