for(int i=1;i<str_arry.length;i++){
if(s.lastElement().equals(str_arry[i])){
s.push(str_arry[i]);
}
else {
if(!s.isEmpty()) s.pop();
}
}
我无法检测为什么这个人在线程&#34; main&#34;
java.util.NoSuchElementException at java.util.Vector.lastElement(Vector.java:503)
由于代码s.pop()是该异常的原因,但如果我使用s.isEmpty(),这怎么可能呢。
答案 0 :(得分:3)
导致异常的不是s.pop()
:它是s.lastElement()
,如堆栈跟踪中的java.util.Vector.lastElement
所示。这意味着您在调用s.isEmpty()
之前必须先检查s.lastElement()
。
如果堆栈为空,则无法执行任何循环体:将检查移到外面:
for (int i=1;i<str_arry.length;i++) {
if (s.isEmpty()) break; // Or some other way to handle it.
if (s.lastElement().equals(...) {
s.push(...);
} else {
s.pop();
}
}