最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

當(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。

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

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

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

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

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

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

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

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

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

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

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

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

舉報(bào)

0/150
提交
取消

當(dāng)中的while問題

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

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

幫助反饋 APP下載

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

公眾號(hào)

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