我正在尝试获取<AU></AU>
文件中标签之间的文本,然后在新行上打印出结果。我需要使用 switch 语句和一个名为 CharacterFromFileReader 的辅助类来执行此操作,该类一个一个地读取文件中的每个字符。
这是我到目前为止提出的代码:
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 的字符串中。由于它将字符附加到字符串,它应该检查字符 '<',如果存在则继续检查结束标记</AU>
。如果存在结束标记,则打印出 _toReturn。
有关如何编写适当解决方案的任何提示/建议?