我正在尝试抓取文件中<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的String中。因为它将字符附加到字符串,它应该检查字符'&lt;',如果它存在,则继续检查结束标记</AU>
。如果存在结束标记,则打印_toReturn。
有关如何编写正确解决方案的任何提示/建议?
答案 0 :(得分:0)
在您的交换机中的每个案例之后,您似乎缺少break;
语句。如果你添加它们,看起来它可能会按你的意愿行事。