Java中的基本堆栈程序

时间:2015-04-02 04:59:55

标签: java loops stack pop

该计划背后的想法是,在一个停车场有5个停车位,它应该是一个堆栈,如果离开的人有他们的车停在那里,那么它前面的车需要是搬到了一条小街上,(LIFO)所以我决定要做的就是那些必须搬到小街的车,我把小巷改成另一堆,这样他们就会以某种方式弹出并推动每个其他,所以即时工作在while循环/ for循环(不确定哪个是最好的)将在汽车离开时运行。我很难通过堆栈寻找特定的汽车和堆栈的大小变化。

        if (code.equalsIgnoreCase("A") && park.size() < 5){
            park.push(car);
            System.out.println("***parked in alley***");
            System.out.println(license + " parked at " + time.toString());
        }

        else if(code.equalsIgnoreCase("D")){
            while(run)
            {  
                if (park.peek() == car.getLicense()){
                    System.out.println(car.getLicense() + " left at " + time.toString()+" paying " + 
                            "money");

                park.pop();
                run = false;
                }
                else{
                street.push(park.peek());
                park.pop();
                System.out.println("***car moved from alley to street***");
                }

它不是真正找到所需的汽车,它只是运行else语句,直到我得到一个空的堆栈错误,我想能够得到一些循环,它将把它上面的所有元素移动到街道堆叠,直到找到并移除该车,然后将街车以无特定顺序添加回巷子。

2 个答案:

答案 0 :(得分:0)

除非您在堆栈中存储基元(如果您使用的是java.util.Stack,这是不可能的),您应该替换

park.peek() == car.getLicense()

park.peek().equals(car.getLicense())

如果park.peek()返回引用类型,则只应使用equals()将其与其他对象进行比较。

答案 1 :(得分:0)

我假设park.peek()将返回car类型的Object。如果是这种情况,那么你应该检查,

if(park.peek().getLicense() ==car.getLicense())

或覆盖Car类中的equals()方法,以便比较两个汽车对象的许可证值。

否则,你必须修改park.peek()方法以返回汽车的许可证价值。