给Vehicle类添加一个refuel方法 它期望两个参数:fuelQuantity和mil
问题详情
给Vehicle类添加一个refuel方法,它期望两个参数:fuelQuantity和milesSinceLastFueling。还要给Vehicle类添加用于totalMileage和totalFuelConsumed的实例变量。此外,添加一个名为fuelEconomy的访问器方法,它将返回车辆每加仑行驶的总英里数。在Skateboard的实例上调用refuel方法时,你将做什么以使该方法正确工作?编写一个名为ManyVehicles的测试类,它将创建多种不同的Vehicle,练习你创建的所有方法,并检查它们执行正确。例如,试试把Skateboard的速度设置为60,或者给Skateboard加油。检查是否正确地执行了燃油经济性计算。
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:private double totalFuel=0.;private double totalMiles=0.;public void reFuel(double fueiQuantitydouble milesSinceLastFueling){totalMiles+=milesSinceLastFueling;totalFuel+=fuelQuantity;}publ ic double fuelEconomy(){return tota]Miles/totalFuel;}在Skateboard的实例上调用refuel方法时应做如下工作:class Skateboard extends Vehicle{public Skateboard(String mkString mdlString clr){super(mkmdl1clr);}public double changeSpeed(double newSpeed){if(newSpeed>10.){newSpeed=10.;}double accel=newSpeed-this.getSpeed();thiS.setSpeed(newSpeed);return accel ;}publiC double fuelEconomy()throws UnsupportedOperationException{throw new UnsupportedOperationException("Skateboard Uses no fuel");}public void reFuel(double gallonsdouble miles)throws UnsupportedOperationException{throw new UnsupportedOperationException("Skateboard uSes no fuel");}}ManyVehicles的测试类:public clasS ManyVehicles{//main method:testS the VehiCle classpublic static void main(String[]args){Vehicle vlv2v3v4;vl=new Vehicle("Ford""MuStanq"2"red");v2=new Vehicle("BMW""328i"4"silver");v3=new Vehicle("Chrysler""PT Cruiser"4"gold");System.out.println("There are"+Vehicle.VehicleCount+"vehicles.");System.out.println(”Make of vl(Ford):"+V1.getMake());System.out.println("Model of v2(328i):"+v2.getModel());System.out.printin("Col.or of v3(gold:"+v3.getColor());System.out.println("Max occupants of v1(2):"+v1.getMaxOccupants());double accel=v1.changeSpeed(70.);System.out.println(v1.getModel()+"accelerated by"+accel+"mph to”+v1.getSpeed()+"mph.");v1.setMake("Chevrolet");v1.setModel("Malibu");v1.setColor("white");v1.setSpeed(60.);System.out.println("v1 is now a"+v1.getColor()+""+v1.getMake()+""+v1.getModel()+"going”+v1.getSpeed()+"mph.");v4=new Skateboard("Mako""Shark""red");accel=v4.changeSpeed(5.);System.out.println(”v4 is a"+v4.getMake()+""+v4.getModel()+""+v4.getColor()+"skateboard going"+v4.getSpeed()+"mph.");accel=v4.changeSpeed(22.);System.out.println("The Skateboard is now going"+v4.getSpeed()+"mph.");v2.reFuel(11.3295.) //should be 2 6.1 mpgSystem.out.println("The"+v2.getMake()+"mileage:"+v2.fuelEconomy());try{System.outprintln ("Refueling skateboard")v4refuel(0.5.);}catch(Exception e}{System.out.println(e.getMessaqe());}}}
privatedoubletotalFuel=0.;privatedoubletotalMiles=0.;publicvoidreFuel(doublefueiQuantity,doublemilesSinceLastFueling){totalMiles+=milesSinceLastFueling;totalFuel+=fuelQuantity;}publicdoublefuelEconomy(){returntota]Miles/totalFuel;}在Skateboard的实例上调用refuel方法时,应做如下工作:classSkateboardextendsVehicle{publicSkateboard(Stringmk,Stringmdl,Stringclr){super(mk,mdl,1,clr);}publicdoublechangeSpeed(doublenewSpeed){if(newSpeed>10.){newSpeed=10.;}doubleaccel=newSpeed-this.getSpeed();thiS.setSpeed(newSpeed);returnaccel;}publiCdoublefuelEconomy()throwsUnsupportedOperationException{thrownewUnsupportedOperationException("SkateboardUsesnofuel");}publicvoidreFuel(doublegallons,doublemiles)throwsUnsupportedOperationException{thrownewUnsupportedOperationException("SkateboarduSesnofuel");}}ManyVehicles的测试类:publicclasSManyVehicles{//mainmethod:testStheVehiCleclasspublicstaticvoidmain(String[]args){Vehiclevl,v2,v3,v4;vl=newVehicle("Ford","MuStanq",2,"red");v2=newVehicle("BMW","328i",4,"silver");v3=newVehicle("Chrysler","PTCruiser",4,"gold");System.out.println("Thereare"+Vehicle.VehicleCount+"vehicles.");System.out.println(”Makeofvl(Ford):"+V1.getMake());System.out.println("Modelofv2(328i):"+v2.getModel());System.out.printin("Col.orofv3(gold:"+v3.getColor());System.out.println("Maxoccupantsofv1(2):"+v1.getMaxOccupants());doubleaccel=v1.changeSpeed(70.);System.out.println(v1.getModel()+"acceleratedby"+accel+"mphto”+v1.getSpeed()+"mph.");v1.setMake("Chevrolet");v1.setModel("Malibu");v1.setColor("white");v1.setSpeed(60.);System.out.println("v1isnowa"+v1.getColor()+""+v1.getMake()+""+v1.getModel()+"going”+v1.getSpeed()+"mph.");v4=newSkateboard("Mako","Shark","red");accel=v4.changeSpeed(5.);System.out.println(”v4isa"+v4.getMake()+""+v4.getModel()+""+v4.getColor()+"skateboardgoing"+v4.getSpeed()+"mph.");accel=v4.changeSpeed(22.);System.out.println("TheSkateboardisnowgoing"+v4.getSpeed()+"mph.");v2.reFuel(11.3,295.),//shouldbe26.1mpgSystem.out.println("The"+v2.getMake()+"mileage:"+v2.fuelEconomy());try{System.out,println("Refuelingskateboard"),v4,refuel(0.,5.);}catch(Exceptione}{System.out.println(e.getMessaqe());}}}