請教讀檔的問題 |
尚未結案
|
過路的
一般會員 發表:11 回覆:17 積分:5 註冊:2004-04-01 發送簡訊給我 |
public void show(){ try{ FileReader fr=new FileReader("C:/java/loadfile/src/loadfile/02.txt"); int clock1=0,clock2=0,t; String search; char arr[]=new char[100]; fr.read(arr); clock1=81; clock2=clock1; while(arr[clock2]!=13){ clock2 ; } clock2-=clock1; search=String.valueOf(arr,clock1,clock2); System.out.println(search); } catch(IOException error){ System.out.println(error.getMessage()); } } -------------------------------------------------(以下是錯誤訊息) java.lang.ArrayIndexOutOfBoundsException: 100 at loadfile.Frame1.show(Frame1.java:30) at java.awt.Component.show(Component.java:1133) at java.awt.Component.setVisible(Component.java:1088) at loadfile.loadstring.------------------------------------------------------------------- 我想請問一下,我這段程式是要檢查純文字檔的內容,clock1=81是我要讀取的資料開頭,但是我只要將clock1設定超過79,就會出現上述的錯誤訊息,如果在79以內,都可以正常執行;當初看訊息時,以為是說我宣告的陣列不夠長,但後來我把陣列加長到200,問題仍未解決,請問是我哪邊沒注意到嗎? |
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
我看到一個可能發生問題的點,當您的 clock2++ 到超過 100 時,arr[clock2] 就會超過範圍,程式就掛了,紅字部份您加上去試試看:
public void show(){ try{ FileReader fr=new FileReader("C:/java/loadfile/src/loadfile/02.txt"); int clock1=0,clock2=0,t; String search; char arr[]=new char[100]; fr.read(arr); clock1=81; clock2=clock1; while(arr[clock2]!=13 && clock2 < 100){ clock2 ; } clock2-=clock1; search=String.valueOf(arr,clock1,clock2); System.out.println(search); } catch(IOException error){ System.out.println(error.getMessage()); } }發表人 - allenchan 於 2004/12/18 23:51:51 |
ahan
一般會員 發表:11 回覆:18 積分:15 註冊:2002-07-07 發送簡訊給我 |
|
過路的
一般會員 發表:11 回覆:17 積分:5 註冊:2004-04-01 發送簡訊給我 |
感謝2位大大的說明,小弟將我的文件貼上來,希望能有所幫助!
因為我是要對這些內容做分類,加以存入資料庫,所以希望最好是一次就把所有資料都做完分析。 大達通運公司
醉新型歐洲原裝冷汽車出租
紀華邦
地址:台北市北投區中和街459號1F
TEL:(02)8916170
行動電話:090138726
呼叫器:060377143 --------------------------------------------------------------------
while(arr[clock2]!=13) ←關於這一行,小弟是用來檢查是否到字串尾端,不知道是JAVA本身的問題還是怎麼回事,他讀到的整行字串尾端,除了換行符號10之外,在10的前一個字元位址,就存著13這個碼,所以小弟就以13當作是否到字串尾端的判斷。 發表人 - 過路的 於 2004/12/19 00:44:41 發表人 - 過路的 於 2004/12/19 00:49:50
|
ahan
一般會員 發表:11 回覆:18 積分:15 註冊:2002-07-07 發送簡訊給我 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
|
過路的
一般會員 發表:11 回覆:17 積分:5 註冊:2004-04-01 發送簡訊給我 |
感謝 neoart、ahan、allenchan 三位大大的幫忙,小弟終於找到問題了。 問題在讀取內容不 > = 陣列大小時,文件的最後一行被 fr.read(arr); 讀取至記憶體之時,不滿陣列大小的部分,會被JAVA加入 ASCII碼:0 ,用來填補不足之處,所以只有最後一行的結尾碼會與前面的所有字串的結尾碼都不同,也就是說只要我在while(arr[clock2]!=13) 裡面的判斷條件加入 && arr[clock2]!= 0 ,問題就解決了,感謝三位大大的提醒、幫忙。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |