我有以下代码部分来初始化堆栈数组:

vDec.setRoute(new Stack[vDec.getIndexes().length]);
for(i=0;i<vDec.getIndexes().length;i++){
    vDec.getRoute()[i]=new Stack<>();
}


当我检查java.util.EmptyStackException循环内是否为空但不是之前,我得到while。因此,对于这一部分:

if(vDec.getRoute()[(int)IndexVeh.peek()].isEmpty()){
    System.out.println("it works");
}
while((cDec.getVisitedBy()[crtCust]==-1)&&(!Distance.empty())){
    if(vDec.getRoute()[(int)IndexVeh.peek()].isEmpty()){
        do something


我首先得到输出it works,然后是异常。

最佳答案

在线上

     if(vDec.getRoute()[(int)IndexVeh.peek()].isEmpty())


当且仅当执行该行时EmptyStackException为空时,您才会得到一个IndexVeh

10-02 23:16