0
我試圖抓取文件中的<AU></AU>
標記之間的文本,然後在新行上打印出結果。我需要用一個switch語句和一個名爲CharacterFromFileReader的幫助器類來完成這個任務,它逐個讀取文件中的每個字符。使用Java switch語句在特定HTML標記之間抓取文本
這是我想出了迄今爲止代碼:
package code;
import java.util.HashMap;
import util.general.CharacterFromFileReader;
public class HW4 {
String _toReturn = "";
public void authorScanner(String inputPath){
CharacterFromFileReader reader = new CharacterFromFileReader(inputPath);
int state = 0;
while(reader.hasNext()){
char c = reader.next();
switch(state){
case 0:
_toReturn = "";
if(c=='<'){
state = 1;
}
case 1:
if(c=='A'){
state = 2;
}
case 2:
if(c=='U'){
state = 3;
}
case 3:
if(c=='>'){
state = 4;
}
case 4:
if(c=='<'){
state = 5;
}
if(c != '<'){
_toReturn = _toReturn + c;
state = 4;
}
case 5:
if(c=='/'){
state = 6;
}
case 6:
if(c=='A'){
state = 7;
}
case 7:
if(c=='U'){
state = 8;
}
case 8:
if(c=='>'){
System.out.println(_toReturn);
state = 0;
}
else{
state = 0;
}
}
}
}
}
然而,當我運行authorScanner(的test.xml);,我得到以下的輸出:
>
>
這裏的test.xml的內容:
<AU>AUTHOR</AU>
我在做什麼錯?我相信我已經設置了switch語句來搜索<AU>
,然後讓它將以下字符附加到稱爲_toReturn的字符串。由於它將字符添加到字符串中,因此應該檢查字符'0',如果它存在,請繼續檢查結束標記</AU>
。如果結束標籤存在,則打印出_toReturn。
關於如何寫出適當解決方案的任何提示/建議?
當你說你「必須用switch語句來做到這一點」時,這實際上是學校作業中規定的一部分嗎?我問,因爲轉換聲明是一個可怕的方式來做到這一點。 – Aurand 2013-02-22 20:46:40
是的,不幸的是,這是作業的一部分。 – Bob 2013-02-23 19:42:16