Re: [問題] 編譯沒有錯誤但是進入while迴圈後程式停住
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):