0

<AU></AU>ファイル内のタグ間のテキストを取得して、結果を新しい行に出力しようとしています。これを行うには、switchステートメントとCharacterFromFileReaderというヘルパークラスを使用します。このクラスは、ファイル内の各文字を1つずつ読み取ります。

これは私がこれまでに思いついたコードです:

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;スイッチの各ケースの後にステートメントが欠落しているようです。それらを追加すると、意図したとおりに動作するように見えます。

于 2013-02-22T20:46:25.307 に答える