黑马程序员技术交流社区

标题: 关于在while括号中的赋值问题???? [打印本页]

作者: Ysfox    时间: 2013-7-1 20:04
标题: 关于在while括号中的赋值问题????
我想读取一个文件
正确写法是这样:
  1. import java.io.*;
  2. class FileReaderTest
  3. {
  4.     public static void main(String[] args) throws IOException
  5.      {
  6.          FileReader fr = new FileReader("FileWriterAgain.java");
  7.          char[] arr = new char[1024];
  8.          int len =0;
  9.          while((len=fr.read(arr))!=-1)
  10.          {
  11.              System.out.print(new String(arr,0,len));   
  12.          }
  13.          fr.close();
  14.      }
  15. }
复制代码
错误写法这样:
  1. import java.io.*;
  2. class FileReaderTest
  3. {
  4.     public static void main(String[] args) throws IOException
  5.      {
  6.          FileReader fr = new FileReader("FileWriterAgain.java");
  7.          char[] arr = new char[1024];
  8.                  while((int len = fr.read(arr))!=-1)
  9.                         {
  10.                                 System.out.println(new String(arr,0,len));
  11.                         }
  12.          fr.close();
  13.      }
  14. }
复制代码
问题:我想问为什么第二种写法是错误的??
作者: liujkh123    时间: 2013-7-2 08:43
while里面定义的变量是在含有while语句所在方法执行结束的时候才释放,所以用while来定义变量类型和名字就会每次循环就定义一次,而且变量名还是一样,就会出错了。
用代码表示就是相当于
  1. 循环一次
  2. (int len = fr.read(arr))!=-1
  3. 循环两次
  4. (int len = fr.read(arr))!=-1
  5. (int len = fr.read(arr))!=-1
  6. 循环三次
  7. (int len = fr.read(arr))!=-1
  8. (int len = fr.read(arr))!=-1
  9. (int len = fr.read(arr))!=-1
复制代码
所以楼主应该看出来错在哪里吧
作者: Ysfox    时间: 2013-7-2 10:46
Thank You !
作者: Just_Only    时间: 2013-7-2 12:57
看回答问题已经解决,我把帖子改成已解决,如果还没有解决,请联系我。。。




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