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

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

請問一個關于視頻中while的問題

int bytes = 0;
?? ??? ?int j = 1;

while((bytes = in.read(buf,0,buf.length)) != -1){
?? ??? ??? ?for(int i = 0 ; i < bytes ; i++){
?? ??? ??? ??? ?System.out.print(Integer.toHexString(buf[i] & 0xff) + "? ");
?? ??? ??? ??? ?if(j++%10 == 0){
?? ??? ??? ??? ??? ?System.out.println();
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}

這個返回的bytes,在讀取的文件確定的時候,應該是個固定的值吧?

那么視頻中的循環為什么不會發生死循環?

正在回答

1 回答

不是固定的值,如果有數據,就是讀取的字節數,如果沒數據,就是-1


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

a4500 提問者

讀取的字節數應該就是buf.length或者是文件字節數吧, 比如文件有imooc五個字節,返回的bytes應該為5,那么while循環如何停止?
2015-04-07 回復 有任何疑惑可以回復我~
#2

好幫手慕珊 回復 a4500 提問者

bytes是實際讀取到的字節數,如果沒有讀到數據bytes就為-1,循環就停止了
2015-04-07 回復 有任何疑惑可以回復我~
#3

a4500 提問者 回復 好幫手慕珊

這個我知道,不過bytes = in.read(buf,0,buf.length) 這段話是怎么執行的呢?如果一個imooc.txt中只有imooc五個字符, bytes=5才對,那么while(5 != -1)循環不就沒辦法停止了嗎?
2015-04-07 回復 有任何疑惑可以回復我~
#4

a4500 提問者 回復 好幫手慕珊

剛剛又想了想,是不是一次能讀完的話,就是先返回一個int,到下一次循環的時候再返回-1, 如果buf[]數組容量不足,那么就多次循環,直到讀完整個文件,讀完之后再返回-1
2015-04-07 回復 有任何疑惑可以回復我~
#5

langren1992 回復 a4500 提問者

下一次讀取時,就到了文件末尾,于是bytes=-1,循環結束
2015-08-10 回復 有任何疑惑可以回復我~
#6

慕粉3727206

每次循環byte的值會和之前的值相加嗎?
2016-09-01 回復 有任何疑惑可以回復我~
查看3條回復

舉報

0/150
提交
取消

請問一個關于視頻中while的問題

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

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

幫助反饋 APP下載

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

公眾號

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