Java:在Switch语句中使用Iterator

时间:2013-11-06 12:53:38

标签: java if-statement arraylist iterator switch-statement

我想使用ArrayList<String>在名为fileContent的{​​{1}}之间循环,我希望一次分析一个字符串,这应该会导致特定的状态Iterator interface,取决于它是什么字符串。 对象令牌应该被读作'Table'。

switch statement

这不会将状态切换为1,而是打印出来:

        void process() {

        Iterator fileIterator = fileContent.iterator();

        int state = 0;
        Object token = null;
        switch (state) {

        case 0:
            token = fileIterator.next();
            if (token.equals("Table")) {
                System.out.println(token);
                state = 1;
            } else {
                System.err.println("Corrupt file format at state 0: "+ token);
                System.exit(0);
            }
            break;
        }

    }

所以它似乎正确地将Object标记读作'Table'而不是语句'Corrupt file format at state 0: Table' 。 我也试过'if (token.equals("Table"))'

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

看起来你想要等同于Strings,试试这个

    void process() {

    Iterator fileIterator = fileContent.iterator();

    int state = 0;
    String token = "";  // notice this
    switch (state) {

    case 0:
        token = ((String)fileIterator.next()).trim();  // notice this
        if (token.equals("Table")) {
            System.out.println(token);
            state = 1;
        } else {
            System.err.println("Corrupt file format at state 0: "+ token);
            System.exit(0);
        }
        break;
    }

}

答案 1 :(得分:0)

是什么让你觉得“它正确地将对象标记读作'表'”?当if()失败时,token必须与Table不同。我的猜测是输出有误导性。试试这个:

System.err.println("Corrupt file format at state 0: ["+ token + "]");

令牌周围的方括号将帮助您查看意外的空白字符。

另请注意,token可能不是字符串,但在调用Table时返回toString()(如果将其附加到字符串,则会发生这种情况)。