亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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進行判斷,所以循環里外賦值沒有區別。是不是我哪里想錯了?求解啊!謝謝?。?/div>
2017-07-28 回復 有任何疑惑可以回復我~
#2

慕少7573967

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

舉報

0/150
提交
取消

socket服務器與客戶端通信問題------服務器循環接收客戶端消息

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號