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

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

為什么這段代碼里面會產生循環?為什么 b和i的值會變化?

FileInputStream?in?=new?FileInputStream(fileName);
????????int?b=in.read();
	int?i=1;
	while((b=in.read())!=-1){
	System.out.print(Integer.toHexString(b)+"??");
		if(i++%10==0){
			System.out.println();
		}
	}

每次in.read()都會自動往后挪一個字節?

這個if條件里面,無論是否滿足都會執行i++嗎?

正在回答

3 回答

while后面的(b=in.read())!=-1返回的是一個布爾值,而這個值只有在文件讀到結尾的時候才返回false,即in.read==-1,所以在讀完之前返回的都是true,都可以執行循環

b的值本身不會變化,但是文件的指針pointer在每次循環后都會加1,所以每次b讀出來的值都是不一樣的

if的判斷條件是i++%10==0,先判斷i%10的值是否為0,然后自增1,此時i=i+1,然后進入下一個循環,判斷i+1的值除以10余數是否為0,所以就算if的條件不滿足,i也執行了自增

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

慕粉1052051344

運算優先級應該是++在前,%在后吧。
2017-06-23 回復 有任何疑惑可以回復我~

結束循壞的條件是in.read()==-1,因為讀到-1就表示結束了

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

in.read() 會后移的, 條件不滿足是不是i++的

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

慕粉4241372 提問者

最后一句沒懂。從程序執行結果來說,就算if里面的判斷條件不滿足,i也會執行++吧,要不然這個i的值就不會變化了
2017-03-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么這段代碼里面會產生循環?為什么 b和i的值會變化?

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

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

幫助反饋 APP下載

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

公眾號

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