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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 覃勇 初级黑马   /  2013-7-1 19:32  /  1184 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

正确代码:
  1. import java.io.*;
  2. class FileReaderTest
  3. {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 FileReader fr = new FileReader("Test.txt");
  7.                 char[] arr = new char[4];
  8.                 int len = 0;
  9.                 while((len = fr.read(arr))!=-1)
  10.                 {
  11.                         System.out.println(new String(arr,0,len));
  12.                 }
  13.         }
  14. }
复制代码
错误代码:
  1. import java.io.*;
  2. class FileReaderTest
  3. {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 FileReader fr = new FileReader("Test.txt");
  7.                 char[] arr = new char[4];
  8.                 while((int len = fr.read(arr))!=-1)
  9.                 {
  10.                         System.out.println(new String(arr,0,len));
  11.                 }
  12.         }
  13. }
复制代码
问题:为什么我在while内部为len赋值就会出错???

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
竟然连着俩人发一样的问题
请参考http://bbs.itheima.com/thread-58677-1-1.html
回复 使用道具 举报
应该是全局变量和局部变量的问题吧!第一个是,在整个main函数中有效,而第二个则是在while中有效。
回复 使用道具 举报
本帖最后由 longlangcx 于 2013-7-2 10:06 编辑

LZ没有搞清楚赋值表达式和赋值语句的区别。

while(boolean-expression){
    statements
}

其中括号里的部分需要一个值为布尔型的内容,可以是布尔型直接常量:true/ false,可以是一个布尔变量,可以是一个返回boolean值的方法调用,还可以是值为布尔型的关系表达式或逻辑表达式,或者布尔型的赋值表达式。

len = fr.read(arr))!=-1,这个属于是赋值表达式,赋值表达式的值就是赋值的内容本身,即 fr.read(arr))!=-1部分,这是一个关系表达式,值为布尔型,所以可以放在while里。
int len = fr.read(arr))!=-1,声明+初始化,这个就不是赋值表达式了,属于赋值语句而不是赋值表达式,本身是没有值的,所以自然不行。

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
while中式判断True、和false的这么写就可能存在错误
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马