该计划背后的想法是,在一个停车场有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语句,直到我得到一个空的堆栈错误,我想能够得到一些循环,它将把它上面的所有元素移动到街道堆叠,直到找到并移除该车,然后将街车以无特定顺序添加回巷子。
答案 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()方法以返回汽车的许可证价值。