0

我正在尝试获取<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。

有关如何编写适当解决方案的任何提示/建议?

4

1 回答 1

0

看起来您break;在 switch 中的每个 case 之后都缺少语句。如果你添加这些,它看起来可能会做你想要的。

于 2013-02-22T20:46:25.307 回答