我想使用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"))'
有人能帮助我吗?
答案 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()
(如果将其附加到字符串,则会发生这种情况)。