Re: [問題] 編譯沒有錯誤但是進入while迴圈後程式停住

看板java作者 (十三)時間13年前 (2010/12/15 20:00), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《angus2006 (禹)》之銘言: : 各位大大你好 : 小弟的程式在compile沒有錯誤 : 但不知為何跑程式時進入程式中的while迴圈就停住 : 可以請高手大大幫忙看一下是哪裡出問題了嗎 : 程式碼在下面網址 : http://s98.tku.edu.tw/~498418010/ParserRun.java : http://s98.tku.edu.tw/~498418010/Parser.java : http://s98.tku.edu.tw/~498418010/Parser2.java : http://s98.tku.edu.tw/~498418010/Parser3.java : 謝謝 有sample檔果然馬上抓到問題。 前提,推文的幾個break位置要改對。 問題有兩個: 1.for迴圈裡用來確認標籤"<"和"</"的長度不夠。 "<"在一開頭,所以可能上沒問題,但是"</"是在內容後面。 如果內容過長,for迴圈跑沒那麼多次,就抓不到。 所以我把< 100改成< 1000,要改的有兩個地方。 for (int i = 0; i < 1000; i++)// 計算標籤長度 ^^^^^^^ 建議你用static final起來。 2.如果內容和"</"剛好只有一個token,程式要整個跳出。 像是113</weblog:tier>,才一個token而已。 當你抓了113之後,要整個跳出兩層的for迴圈, 為避免更動你的程式碼太多,我只加了一個boolean isFinished變數 boolean isFinished = false; while (!token.startsWith("<") && !token.startsWith("</")) // 取得標籤所包含的內容 然後在內for迴圈裡 for (int i = 0; i < 1000; i++)// 計算標籤長度 { temp = ""; temp = temp + token.charAt(i) + token.charAt(i + 1); if (temp.equals("</")) { token = token.substring(0, i);// 去掉結束標籤 content = content + " " + token; isFinished = true; break;// 取得開始標籤後即可跳出for迴圈 } } if(isFinished) { // 內容已全部擷取完畢,跳出迴圈 break; } 改了以上這兩點之後,就可以在視窗顯示content了, 如果我這樣講不清楚的話,再信件聯絡,看怎麼把改好的檔給你。 Bleed -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.119.204

12/16 17:08, , 1F
感謝大大 問題已解決了 ^^
12/16 17:08, 1F
文章代碼(AID): #1D2AtjbF (java)
文章代碼(AID): #1D2AtjbF (java)