运行时有错误 自己找不到 求帮忙

问题描述

设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若停车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。classCar{publicintno;publicintarrive;publicintleave;publicCarlink;//队列的指针publicintchargeStart=-1;publicCar(){}publicCar(intnumber){this.no=number;this.arrive=0;this.leave=0;this.link=null;}//成员方法:得到指针publicCargetLink(){returnlink;}//成员方法:修改指针publicvoidsetLink(Carn){link=n;}//成员方法;得到车牌号publicintgetNum(){returnno;}publicCar(intno,inttimeIn,inttimeOut){this.no=no;this.arrive=timeIn;this.leave=timeOut;}publicCar(intno,inttimeIn){this(no,timeIn,-1);}publicStringtoString(){returnString.format("Car(%d)",no);}}classCarStopextendsArrayStack<Car>{publicCar[]carStark1;//停车场privateinttopIndex;privatestaticfinalintMAX_SIZE=50;publicCarStop(){this(MAX_SIZE);topIndex=-1;}publicCarStop(intinitialCapacity){carStark1=(Car[])newObject[initialCapacity];topIndex=-1;}//检查该车是否有在车场publicbooleancontains(Carcar){booleanfound=false;for(inti=0;i<topIndex;i++)if(car.equals(carStark1[i])){found=true;break;}returnfound;}//获得停车场中第i号车位的车牌号publicintgetNum(inti){returncarStark1[i-1].no;}publicbooleanisFull(){returntopIndex>carStark1.length;}privateintsize(){//TODO自动生成方法存根returncarStark1.length;}publicCarpop(){returnsuper.pop();}publicvoidpush(Carcar){topIndex++;if(topIndex>=carStark1.length){doubleArray();}carStark1[topIndex]=car;}}//队列publicclassCarTunnel{Carheader;Carcurrent;intsize;//构造方法:建立一个空表publicCarTunnel(){header=newCar();current=header;size=0;}publicvoidunshift(Carcar){car.setLink(header);}//把当前位置之后插入一个新结点publicvoidinsertcar(intvalue){Carnewcar=newCar(value);newcar.setLink(current.link);current.setLink(newcar);current=newcar;size+=1;System.out.println("*********************************************");System.out.println("您的车牌号:"+newcar.no);System.out.println("停车场已满,您现在在等待中,您的位置是"+size+"个位置");System.out.println("*********************************************");}publicintremove(Carcar){intre;inti;for(i=0;i<size;i++)if(current!=car&&current.link!=null)getNext();re=i;returnre;}//删除当前位置结点后面的结点publicvoiddelete(){Carreplace;replace=current.link;if(replace==null)return;current.setLink(replace.link);replace=null;size-=1;}//删除第i个结点publicvoiddelete(inti){if(i>size||i<=0)return;locate(i-1);delete();}//由当前结点到下一个结点publicCargetNext(){if(current==null)returnnull;current=current.link;returncurrent;}//得到队列的左后一辆车publicCargetLast(){while(current.link!=null){getNext();}returncurrent;}//由车牌号找到车publicCarfind(intvalue){current=header;while(current.no!=value){if(current.link==null){System.out.println("找不到需要的数!!!!");current=header;break;}current=current.link;}returncurrent;}//取得第m位置的元素publicCarlocate(intm){if(m>size)returnnull;current=header;inti;for(i=m;i>0;i--){getNext();}returncurrent;}//取得第一个元素publicCargetHeader(){returnheader.link;}//队列里有多少车publicintgetLength(){returnsize;}//察看车位publicvoidprint(){current=header.getLink();while(current!=null){inti=1;System.out.print(i+"号车位:"+current.getNum());System.out.println("");i++;getNext();}}}publicclassTest{CarStopcarStop=newCarStop();privateCarTunneltunnel=newCarTunnel();publicvoidtest(){//存放车辆信息,因为不是顺序输入的,所以放到Map中HashMap<Integer,Car>carMap=newHashMap<Integer,Car>();//最早进入车库的时间和最晚出车库的时间intstartTime,endTime;startTime=Integer.MAX_VALUE;endTime=Integer.MIN_VALUE;Scannerscanner=newScanner(System.in);//("A"或者"D"或者"E",int,int)while(scanner.hasNext("\((A|D|E),(\d+),(\d+)\)")){scanner.next("\((A|D|E),(\d+),(\d+)\)");MatchResultr=scanner.match();Carcar;//如果输入Aif(r.group(1).equalsIgnoreCase("A")){//该车已经记录过if(carMap.keySet().contains(Integer.parseInt(r.group(2)))){//取出来设置到达时间car=carMap.get(Integer.parseInt(r.group(2)));car.arrive=Integer.parseInt(r.group(3));}else{//否则就记录该车car=newCar(Integer.parseInt(r.group(2)),Integer.parseInt(r.group(3)));carMap.put(car.no,car);}if(car.arrive<startTime)startTime=car.arrive;if(car.leave>endTime)endTime=car.leave;//出库时间和到达时间同样处理}elseif(r.group(1).equalsIgnoreCase("D")){if(carMap.keySet().contains(Integer.parseInt(r.group(2)))){car=carMap.get(Integer.parseInt(r.group(2)));car.leave=Integer.parseInt(r.group(3));}else{car=newCar(Integer.parseInt(r.group(2)),0,Integer.parseInt(r.group(3)));carMap.put(car.no,car);}if(car.arrive<startTime)startTime=car.arrive;if(car.leave>endTime)endTime=car.leave;}elseif(r.group(1).equalsIgnoreCase("E")){break;}}//把记录过的车做成数组并且排序Car[]cars=newCar[carMap.size()];cars=carMap.values().toArray(cars);Arrays.sort(cars,newComparator<Car>(){//排序顺序是到达时间>出库时间>车牌publicintcompare(Carc1,Carc2){if(c1.arrive!=c2.arrive)returnc1.arrive-c2.arrive;if(c1.leave!=c2.leave)returnc1.leave-c2.leave;returnc1.no-c2.no;}});for(inttime=startTime;time<=endTime;time++){System.out.println("TIME:"+time);for(intk=0;k<cars.length;k++){Carcar=cars[k];//如果有车在没有进入停车场的时候就已经到了出库时间if(car.leave==time&&carStop.isFull()&&!carStop.contains(car)){for(inti=tunnel.size;i>0;i--)//-1{Carc=tunnel.locate(i);if(c.no==car.no){for(intj=i+1;j<=tunnel.size;j++){c=tunnel.locate(j);System.out.println(c+"为"+car+"让路,重新进入等待区");}tunnel.delete(tunnel.remove(car));System.out.println(car+"没进入过停车场就离开了");}else{System.out.println(c+"为"+car+"让路");}}}else{//如果有车子现在到达if(car.arrive==time){//停车场不满if(!carStop.isFull()){//进入停车场carStop.push(car);//开始计费car.chargeStart=time;System.out.println(car+"进入停车场并且开始计费");}else{//停车场满,等待System.out.println(car+"到达,在等待区等待");tunnel.insertcar(car.no);}}}}//dealwithcarsinstop//thecasecarsleaveatsametimeisnotincluded//按照后进先出的顺序看有没有车要离开for(intk=carStop.carStark1.length-1;k>=0;k--){Carcar=carStop.carStark1[k];//准备离开if(car.leave==time){CarotherCar;//所有在他后面进来的车准备让路while((otherCar=carStop.pop())!=car){//进入等待区的最前面tunnel.unshift(otherCar);System.out.println(otherCar+"准备为"+car+"让路");}for(intm=tunnel.size;m>0;m--){System.out.println(tunnel.locate(m)+"为"+car+"让路");}System.out.println(otherCar+"离开,停车时间:"+(otherCar.leave-otherCar.chargeStart));for(intm=1;m<=tunnel.size;m++){System.out.println(tunnel.locate(m)+"让路完毕,重新进入等待区");}CarwaitingCar;//停车场有空位,等待序列最前面的车入库while(!carStop.isFull()&&(waitingCar=tunnel.getHeader())!=null){carStop.push(car);//停车计时开始if(waitingCar.chargeStart==-1){System.out.println(waitingCar+"停车计时时间改为:"+time);waitingCar.chargeStart=time;}System.out.println(waitingCar+"进入停车场");}}}}}publicstaticvoidmain(String[]args){newTest().test();}}

解决方案

解决方案二:
该回复于2011-01-06 13:07:10被版主删除
解决方案三:
内容这么长
解决方案四:
你直接发错误就行,看错误比看代码强
解决方案五:
在它之后进入的车辆必须先退出车场为它让路,这句话不是很理解。。。难道别人停好车了还要开出来?
解决方案六:
引用3楼dyllove98的回复:

你直接发错误就行,看错误比看代码强

O(∩_∩)O哈!
解决方案七:
出了什么错误呢?要告诉大家才行
解决方案八:
同意楼上的

时间: 2024-08-06 23:51:19

运行时有错误 自己找不到 求帮忙的相关文章

数据结构-运行结果错误,找不到哪里有问题?

问题描述 运行结果错误,找不到哪里有问题? #include #include #include #define Chushi 100 #define Zengliang 10 #define SElemType int #define ERROR 0 #define OK 1 typedef struct { SElemType base; SElemType top; char data[100]; int StackSize; }SqStack; void JianStack(SqStac

项目在eclipse maven jetty运行正常,把war复制到jetty 9 webapps 里面运行却错误了

问题描述 大家好,项目在eclipsemavenjetty运行正常,把war复制到jetty9webapps里面运行却错误了有那位能帮帮忙解决呀 解决方案

编程c语言-写的c代码求帮忙找错误

问题描述 写的c代码求帮忙找错误 #include #include #include #include #include extern "C" { WINBASEAPI HWND WINAPI GetConsoleWindow(); } int main(int argc, char *argv[]) //主线程运行结束,辅助线程也结束. { HWND hwnd; HDC hdc; printf("There are some words in console window

c语言 树结构 二叉树-初学二叉树 运行有错误 瞅了几个小时无果 大神帮帮忙 找出错误在哪

问题描述 初学二叉树 运行有错误 瞅了几个小时无果 大神帮帮忙 找出错误在哪 ![图片说明](http://img.ask.csdn.net/upload/201503/07/1425715444_303984.png #include #include typedef struct Tree { int date; struct Tree *lson,*rson; }tree , *ztree; int a[200005]; ztree creat(ztree t,int n) { int h

c-我刚刚入门,写一个一元多项式的简单计算,求帮忙解决这个加减问题,代码如下,帮忙找出错误,急急急

问题描述 我刚刚入门,写一个一元多项式的简单计算,求帮忙解决这个加减问题,代码如下,帮忙找出错误,急急急 #include #include typedef struct node { float c; int e; struct node * next; }lnode,*plnode; void insert_menu(); void insert_pol(plnode &l); void output_pol(plnode &l); void add_pol(plnode list1,

helloworld-编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )

问题描述 编写的java程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld ) 编写的java(HelloWorld )程序编译通过但是运行时显示(错误:找不到或无法加载主类 HelloWorld )4401149_109648.png) 解决方案 你的类名是HelloWorld吗?!不是的话是找不到的哦 解决方案二: 类名是HelloWorld 解决方案三: 应该是 public class HelloWorld{ ... } 解决方案四: 你的命令行输入的是什么?

编程c语言-新手OJ, 找出字符串中出现最多的字母,本机运行正确, 但是wrong answer, 求大神指点

问题描述 新手OJ, 找出字符串中出现最多的字母,本机运行正确, 但是wrong answer, 求大神指点 Description 钟Sir是一个迷信的(superstitious)家伙.他相信每一个字符串(string)里都有一个幸运字符.我们可以通过以下方法找到这个字符.例如,在字符串abbccc中,c 出现的次数最多,所以这个幸运字符就是 c 啦!(>_<) ?(钟Sir的想法好简单啊-) Input 第一行是测试数据的组数n,接下来的每组测试数据占一行,每行数据不超过1000个字符且

新手求助!!!vc6.0 MFC程序编译通过却运行不了,F5输出错误一大堆!!求大神

问题描述 新手求助!!!vc6.0 MFC程序编译通过却运行不了,F5输出错误一大堆!!求大神 Loaded 'ntdll.dll', no matching symbolic information found. Loaded 'C:WindowsSysWOW64kernel32.dll', no matching symbolic information found. Loaded 'C:WindowsSysWOW64KernelBase.dll', no matching symbolic

android运行是错误 求大神指导 在线等待

问题描述 android运行是错误 求大神指导 在线等待 java.lang.IllegalArgumentException: Argument not valid at org.eclipse.swt.SWT.error(SWT.java:4342) at org.eclipse.swt.SWT.error(SWT.java:4276) at org.eclipse.swt.SWT.error(SWT.java:4247) at org.eclipse.swt.widgets.Widget.