黑马程序员技术交流社区
标题:
为什么这样写就错误???
[打印本页]
作者:
覃勇
时间:
2013-7-1 19:32
标题:
为什么这样写就错误???
正确代码:
import java.io.*;
class FileReaderTest
{
public static void main(String[] args) throws Exception
{
FileReader fr = new FileReader("Test.txt");
char[] arr = new char[4];
int len = 0;
while((len = fr.read(arr))!=-1)
{
System.out.println(new String(arr,0,len));
}
}
}
复制代码
错误代码:
import java.io.*;
class FileReaderTest
{
public static void main(String[] args) throws Exception
{
FileReader fr = new FileReader("Test.txt");
char[] arr = new char[4];
while((int len = fr.read(arr))!=-1)
{
System.out.println(new String(arr,0,len));
}
}
}
复制代码
问题:为什么我在while内部为len赋值就会出错???
作者:
liujkh123
时间:
2013-7-2 08:46
竟然连着俩人发一样的问题
请参考
http://bbs.itheima.com/thread-58677-1-1.html
作者:
张昶
时间:
2013-7-2 09:38
应该是全局变量和局部变量的问题吧!第一个是,在整个main函数中有效,而第二个则是在while中有效。
作者:
longlangcx
时间:
2013-7-2 10:04
本帖最后由 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,声明+初始化,这个就不是赋值表达式了,属于赋值语句而不是赋值表达式,本身是没有值的,所以自然不行。
作者:
lanbuohan
时间:
2013-7-2 16:14
while中式判断True、和false的这么写就可能存在错误
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2