第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

當(dāng)中的while問題

public static void main(String[] args) throws IOException{

FileInputStream files = new FileInputStream("C:\\Users\\26023\\Desktop\\html.txt");

int n = 0;

byte[] bytes = new byte[1024*3];

int j = 1;

//從files中讀出數(shù)據(jù)存放到bytes

while((n=files.read(bytes, 0, bytes.length))!=-1){

for(int i = 0 ; i<n;i++) {

System.out.print(Integer.toHexString(bytes[i]&0xff)+" ");

if(j++ %10 == 0) {

System.out.println();

}

}

}

files.close();

}

為什么在while里的for中,要用n(課程里用的bytes)作為限制條件

正在回答

2 回答

以題主的代碼為例:

我所理解題主的困惑在于,for循環(huán)中限制條件為什么是n而bytes.length。

首先我簡要解釋一下這個n與bytes.length的區(qū)別:

  1. length是一個in類型的整數(shù),用于記錄bytes這個字節(jié)數(shù)組的長度。length表示這bytes的最大容量,是一個大小始終不變的固定值。

  2. n是也一個int類型的整數(shù),用于接受file的read方法的返回值。因為這個返回值表示一次讀取從bytes數(shù)組中到的字節(jié)數(shù),所以n就隨著每次從bytes中讀取的字節(jié)數(shù)的變化而變化。

  3. 看來這里題主可能會想,file的read方法每次從bytes中讀取的字符數(shù)難道不都是length嗎?這樣n豈不是恒等于length嗎?這樣for有的限制條件不是選擇n與length都行了嗎?

上面一連串的推測似乎合情合理。其實題主請思考一下,while循環(huán)中的read方法真每次都能讀到length個字節(jié)碼?

題主是否考慮到read方法讀到了文本末尾的情況呢?最后一次讀取中,題主所選的文本是否還有足夠的字節(jié)流入到bytes字節(jié)數(shù)組呢?到了這里,不知道題主是否明了。

如果您仍有疑問,可以私我,我會盡快回復(fù)。望采納。

1 回復(fù) 有任何疑惑可以回復(fù)我~

https://img1.sycdn.imooc.com//5b15664b0001c8cc08070551.jpg

https://img1.sycdn.imooc.com//5b1566da0001443408950319.jpg

你把這兩段代碼對比著來看 應(yīng)該能明白 ? 定義了一個n專門用來實現(xiàn)讀的操作 ?當(dāng)讀到符號位(-1)的時候 停止讀的操作 ?這其實就是一個普通的for循環(huán) ?

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

當(dāng)中的while問題

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號