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

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

求教,為什么我的只輸出了文檔中的第一個字?

我的代碼只輸出了文檔中的第一個字。

返回的c值不是讀不是讀到字符的個數嗎,強制轉換為char類型后就能輸出文檔的內容了???

另外,批量讀取的時候是可以全部讀取文檔內容的。麻煩幫忙解答一下,十分感謝!

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

// TODO 自動生成的方法存根

String file="E:\\javaio\\imooc.txt";

InputStreamReader isr=new InputStreamReader(new FileInputStream(file));

int c;

if((c=isr.read())!=-1){

System.out.println((char)c);//強制類型轉換為char

}

}


}

取的字符的個數嗎,為甚么強制轉換之后會輸出文檔的內容?

正在回答

4 回答

c是用作判斷是否輸出文本末尾的,并不是txt本身文本內容,你可采取其他方式獲取文檔中第一個字,PS:并且你取的是第一個字符,不是第一個字(漢字2字節)。

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

鮮衣 提問者

文檔內幾行字,為什么只輸出了第一個呢?而視頻演示當中是把全部內容都輸出到控制臺了。 為甚么批量輸出的時候需要轉換為String類型?如下 char[] buf=new char[8*1024]; while((c=isr.read(buf,0,buf.length))!=-1){ String s=new String(buf,0,c); System.out.println(s); 新手求教,問得好沒水平@-@,~~~~(>_<)~~~~
2015-07-31 回復 有任何疑惑可以回復我~
#2

伏地炸毛 回復 鮮衣 提問者

是這樣 文檔中的內容是String類型,即字符串類型的,所以批量輸出就是輸出的字符串類型。 四段代碼的意思: 1、定義一個字符數組, 2、把int c的數值改為isr.read(buf,0,buf.length),也就是說按照字符數組大小去讀取txt文件中的內容,不是文章末尾,即不等于-1就一直讀一直讀,直到等于-1時,證明文件讀完了,這時將整個txt的字符數量賦予c, 3、定義一個字符串,長度為c長度,此處的c才有數值,并且是文檔中字符的長度,并不是文章字數(注意),并且是否包含系統默認的開始字符結束字符不確定(注意), 4、輸出該字符串。
2015-07-31 回復 有任何疑惑可以回復我~

注意:c=isr.read()讀取的是單個字符,同時返回的是字符,如果已到達流的末尾,則返回 -1。

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

read方法本來就是讀取內容,只是沒內容可以輸出的時候返回-1

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

求教,為什么我的只輸出了文檔中的第一個字?

這個是因為,你沒有用循環,只有一個if

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

鮮衣 提問者

視頻中也沒有if?。?!
2015-07-31 回復 有任何疑惑可以回復我~
#2

化龍貝 回復 鮮衣 提問者

if((c=isr.read())!=-1){ System.out.println((char)c);//強制類型轉換為char } 這里吶,只讀了一次嘍
2015-07-31 回復 有任何疑惑可以回復我~
#3

鮮衣 提問者 回復 化龍貝

對不起嘍,是我看錯啦!不知道你回答了,我剛去看才發現。非常謝謝!
2015-08-01 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求教,為什么我的只輸出了文檔中的第一個字?

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

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

幫助反饋 APP下載

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

公眾號

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