为了账号安全,请及时绑定邮箱和手机立即绑定

socket服务器与客户端通信问题------服务器循环接收客户端消息

服务器循环接收部分:String data=null;    while((data=bfr.readLine())!=null) {System.out.println("我是服务器,客户端说:"+data);}

和String data=bfr.readLine(); while((data!=null) 

{System.out.println("我是服务器,客户端说:"+data);}

这两种循环语句表述有什么不同呢?为什么一个只循环读取一次而另一个是无限循环??

正在回答

3 回答

data = bfr.readLine()  在循环外只赋值一次,在循环里赋值多次

0 回复 有任何疑惑可以回复我~

(1)String data=bfr.readLine(); while((data!=null)

data在while循环之前赋值,并且while循环时没有对其修改,所以while一直循环。

(2)while((data=bfr.readLine())!=null)

每次while循环都对data重新赋值为bfr.readLine(),所以读到null时终止循环。

明白了吗?望采纳。

3 回复 有任何疑惑可以回复我~

第一个它是data不停改变值,即bfr.readLine()的内容,当bfr.readLine()为null时,赋值给data后,while里面判断语句变为false,就停止循环了;而第二个的bfr.readLine()不为空的值赋值给data后,在循环语句的data!=null就一直为true,所以这个循环语句是无限循环的


0 回复 有任何疑惑可以回复我~
#1

哈哈小魔王 提问者

第二个语句里面的bfr.readLine()一定不为空吗?我考虑的是data在while循环里面和在外面赋值都是一样的,因为都是data的值随着赋值的bfr.readLine()的改变而改变,如果bfr.readLine()为null,其返回值都是赋值给data的,然后对data进行判断,所以循环里外赋值没有区别。是不是我哪里想错了?求解啊!谢谢!!
2017-07-28 回复 有任何疑惑可以回复我~
#2

慕少7573967

你和上面的一个人的解释完全相反
2017-09-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

socket服务器与客户端通信问题------服务器循环接收客户端消息

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信