0

我想循环通过一个ArrayList<String>命名fileContentIterator interface, 并且我希望一次分析一个字符串,这应该导致 的特定状态switch statement,具体取决于它是什么字符串。对象令牌应该被读取为“表”。

        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;
        }

    }

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

'Corrupt file format at state 0: Table'

因此,它似乎将 Object 标记正确地读取为 'Table' 而不是 statement 'if (token.equals("Table"))'。我也试过'if (token == ("Table"))'

有人可以帮助我吗?

4

2 回答 2

0

看起来你想等同于字符串,试试这个

    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;
    }

}
于 2013-11-06T12:56:50.360 回答
0

是什么让您认为“它正确地将 Object 标记读取为 'Table'”?当if()失败时,那么token一定是不同的东西Table。我的猜测是输出具有误导性。试试这个:

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

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

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

于 2013-11-06T12:57:38.757 回答