java定时任务保存首月的车辆分析报告怎么实现

java定时任务保存首月的车辆分析报告怎么实现,第1张

java定时任务保存首月的车辆分析报告在Timer接口中实现。java定时任务保存首月的车辆分析报告实现方法

1、首先,Timer接口中,字段是非常核心重要的。

2、接着,这个TimerThread类其实是Timer的一个内部类,它继承了Thread并重写了其run方法,该线程实例将在构建Timer实例的时候被启动,即可实现java定时任务保存首月的车辆分析报告。

这个是讲java的继承,汽车是大类,奔驰也是属于汽车,所以也有汽车的所有的特性,只是质量啊什么的一些不同(奇瑞也是汽车,但是和奔驰不同把,但他们又都是汽车),Benz这个类继承Car这个累,并重写run方法

Car car = (Car)( new Benz() );

这个是子类可以像上转型,我们可以说奔驰是汽车,但是不可以说汽车是奔驰,创建了一个Benz的对象后调用run方法

类图设计:

类设计:

package car;

public class Car {

 private String id;

 private String name;

public void setId(String id) {

  thisid = id;

 }

public void setName(String name) {

  thisname = name;

 }

/

  获取汽车编号

 

  @return

  /

 public String getId() {

  return id;

 }

/

  获取汽车名称

 

  @return

  /

 public String getName() {

  return name;

 }

public Car(String id, String name) {

  thisid = id;

  thisname = name;

 }

}

package car;

public class Seller {

 private String name;

public void setName(String name) {

  thisname = name;

 }

public String getName() {

  return name;

 }

 

 /

  卖一批车

  @param car

  @param num

  /

 public void sell(Car car,int num){

  Systemoutprintln("卖了一批车,名称:"+cargetName()+"id:"+cargetId());

 }

 

 /

  卖一辆车

  @param car

  /

 public void sell(Car car){

  Systemoutprintln("卖了一辆车,名称:"+cargetName()+"id:"+cargetId());

 }

}

主类:

package car;

public class TestSell {

public static void main(String[] args) {

      Car c1 = new Car("1000","君越");

      Seller s1 = new Seller();

      s1sell(c1);

      //卖100辆车

      s1sell(c1, 100);

 }

}

可以显示车辆信息和打车金额。出租车计费,10公里内3元,超过10公里加收。这个模拟出租车计费系统是用java开发的,上面模拟了出租车在载客,下客,遇到红灯,绿灯,停车,启动等级计费表和里程表的变化情况,主要运用java的线程知识。

这个完全靠数学计算,

预订路径肯定会有一个

路线,线都是由无数个

点组成的,所以它在某

一个位置肯定会有一个

坐标,你就可以设置参

照点了,按需求,这个

参照点就是汽车的实时

坐标,你得从这个点开

始向路线作垂线,那么

套用公式(横坐标相减

或者纵坐标相减)得出

2个距离来,再判断这个

距离是不是超出范围,

超出就运行报警程序

class 火车票{

private String 起点站;

private String 到达站;

private String 车次;

private Date 开车时间;

}

import javautilArrays;

import javautilComparator;

import javautilHashMap;

import javautilScanner;

import javautilStack;

import javautilVector;

import javautilregexMatchResult;

public class Test {

private CarStop carStop = new CarStop(3);

private CarTunnel tunnel = new CarTunnel();

public void test(){

//存放车辆信息,因为不是顺序输入的,所以放到Map中

HashMap<Integer, Car> carMap = new HashMap<Integer, Car>();

//最早进入车库的时间和最晚出车库的时间

int startTime, endTime;

startTime = IntegerMAX_VALUE;

endTime = IntegerMIN_VALUE;

Scanner scanner = new Scanner(Systemin);

//("A"或者"D"或者"E", int, int)

while(scannerhasNext("\\((A|D|E),(\\d+),(\\d+)\\)")){

scannernext("\\((A|D|E),(\\d+),(\\d+)\\)");

MatchResult r = scannermatch();

Car car;

//如果输入A

if (rgroup(1)equalsIgnoreCase("A")){

// 该车已经记录过

if (carMapkeySet()contains(IntegerparseInt(rgroup(2)))){

// 取出来设置到达时间

car = carMapget(IntegerparseInt(rgroup(2)));

cararrive = IntegerparseInt(rgroup(3));

}else{

// 否则就记录该车

car = new Car(IntegerparseInt(rgroup(2)), IntegerparseInt(rgroup(3)));

carMapput(carno, car);

}

if (cararrive < startTime) startTime = cararrive;

if (carleave > endTime) endTime = carleave;

// 出库时间和到达时间同样处理

}else if (rgroup(1)equalsIgnoreCase("D")){

if (carMapkeySet()contains(IntegerparseInt(rgroup(2)))){

car = carMapget(IntegerparseInt(rgroup(2)));

carleave = IntegerparseInt(rgroup(3));

}else{

car = new Car(IntegerparseInt(rgroup(2)), 0, IntegerparseInt(rgroup(3)));

carMapput(carno, car);

}

if (cararrive < startTime) startTime = cararrive;

if (carleave > endTime) endTime = carleave;

}else if (rgroup(1)equalsIgnoreCase("E")){

break;

}

}

// 把记录过的车做成数组并且排序

Car[] cars = new Car[carMapsize()];

cars = carMapvalues()toArray(cars);

Arrayssort(cars, new Comparator<Car>(){

// 排序顺序是到达时间>出库时间>车牌

public int compare(Car c1, Car c2) {

if (c1arrive!=c2arrive) return c1arrive - c2arrive;

if (c1leave!=c2leave) return c1leave - c2leave;

return c1no - c2no;

}

});

for (int time=startTime; time<=endTime; time++){

Systemoutprintln("TIME:" + time);

for (int k=0;k<carslength;k++){

Car car = cars[k];

//如果有车在没有进入停车场的时候就已经到了出库时间

if (carleave == time && carStopisFull() && !carStopcontains(car)){

for (int i=tunnelsize()-1;i>=0;i--){

Car c = tunnelget(i);

if (cequals(car)){

for (int j=i+1;j<tunnelsize();j++){

Systemoutprintln(car + "为" + car + "让路,重新进入等待区");

}

tunnelremove(car);

Systemoutprintln(car + "没进入过停车场就离开了");

}else{

Systemoutprintln(car + "为" + car + "让路");

}

}

}else{

// 如果有车子现在到达

if (cararrive == time){

// 停车场不满

if (!carStopisFull()) {

// 进入停车场

carStoppush(car);

// 开始计费

carchargeStart = time;

Systemoutprintln(car + "进入停车场并且开始计费");

}else{

// 停车场满,等待

Systemoutprintln(car + "到达,在等待区等待");

tunnelpush(car);

}

}

}

}

//deal with cars in stop

//the case cars leave at same time is not included

// 按照后进先出的顺序看有没有车要离开

for (int k=carStopsize() - 1; k>=0; k--){

Car car = carStopelementAt(k);

//准备离开

if (carleave == time){

Car otherCar;

// 所有在他后面进来的车准备让路

while ((otherCar = carStoppop())!=car){

// 进入等待区的最前面

tunnelunshift(otherCar);

Systemoutprintln(otherCar + "准备为" + car + "让路");

}

for (int m=tunnelsize()-1;m>=0;m--){

Systemoutprintln(tunnelelementAt(m) + "为" + car + "让路");

}

Systemoutprintln(otherCar + "离开,停车时间:" + (otherCarleave - otherCarchargeStart));

for (int m=0; m<tunnelsize(); m++){

Systemoutprintln(tunnelelementAt(m) + "让路完毕,重新进入等待区");

}

Car waitingCar;

//停车场有空位,等待序列最前面的车入库

while ( !carStopisFull() && (waitingCar = tunnelshift())!=null ){

carStoppush(waitingCar);

// 停车计时开始

if (waitingCarchargeStart == -1) {

Systemoutprintln(waitingCar + "停车计时时间改为:" + time);

waitingCarchargeStart = time;

}

Systemoutprintln(waitingCar + "进入停车场");

}

}

}

}

}

public static void main(String[] args){

new Test()test();

}

}

@SuppressWarnings("serial")

class CarTunnel extends Vector<Car>{

public CarTunnel(){

super();

}

public Car shift(){

if (size() == 0) return null;

return remove(0);

}

public void unshift(Car car){

superadd(0, car);

}

public void push(Car car){

superadd(car);

}

public Car pop(){

if (size() == 0) return null;

return remove(size()-1);

}

}

@SuppressWarnings("serial")

class CarStop extends Stack<Car>{

private int size;

public CarStop(int size){

thissize = size;

}

public boolean isFull(){

return size() == size;

}

public Car pop(){

return superpop();

}

public Car push(Car car){

if (size() <= size){

return superpush(car);

}else{

return null;

}

}

}

class Car{

public int no;

public int arrive;

public int leave;

public int chargeStart = -1;

public Car(int no, int timeIn, int timeOut){

thisno = no;

thisarrive = timeIn;

thisleave = timeOut;

}

public Car(int no, int timeIn){

this(no, timeIn, -1);

}

public String toString(){

return Stringformat("Car(%d)", no);

}

}

结果:

(A,6,31)

(A,5,30)

(A,4,20)

(A,3,16)

(A,2,15)

(A,1,10)

(D,1,50)

(D,2,30)

(D,3,31)

(D,4,25)

(D,5,32)

(D,6,40)

(E,0,0)

TIME:10

Car(1)进入停车场并且开始计费

TIME:11

TIME:12

TIME:13

TIME:14

TIME:15

Car(2)进入停车场并且开始计费

TIME:16

Car(3)进入停车场并且开始计费

TIME:17

TIME:18

TIME:19

TIME:20

Car(4)到达,在等待区等待

TIME:21

TIME:22

TIME:23

TIME:24

TIME:25

Car(4)没进入过停车场就离开了

TIME:26

TIME:27

TIME:28

TIME:29

TIME:30

Car(5)到达,在等待区等待

Car(3)准备为Car(2)让路

Car(5)为Car(2)让路

Car(3)为Car(2)让路

Car(2)离开,停车时间:15

Car(3)让路完毕,重新进入等待区

Car(5)让路完毕,重新进入等待区

Car(3)进入停车场

Car(5)停车计时时间改为:30

Car(5)进入停车场

TIME:31

Car(6)到达,在等待区等待

Car(5)准备为Car(3)让路

Car(6)为Car(3)让路

Car(5)为Car(3)让路

Car(3)离开,停车时间:15

Car(5)让路完毕,重新进入等待区

Car(6)让路完毕,重新进入等待区

Car(5)进入停车场

Car(6)停车计时时间改为:31

Car(6)进入停车场

TIME:32

Car(6)准备为Car(5)让路

Car(6)为Car(5)让路

Car(5)离开,停车时间:2

Car(6)让路完毕,重新进入等待区

Car(6)进入停车场

TIME:33

TIME:34

TIME:35

TIME:36

TIME:37

TIME:38

TIME:39

TIME:40

Car(6)离开,停车时间:9

TIME:41

TIME:42

TIME:43

TIME:44

TIME:45

TIME:46

TIME:47

TIME:48

TIME:49

TIME:50

Car(1)离开,停车时间:40

以上就是关于java定时任务保存首月的车辆分析报告怎么实现全部的内容,包括:java定时任务保存首月的车辆分析报告怎么实现、请Java高手过目一下(俺不会了!),题目的运行结果是什么可以详细的讲一讲,俺是个初学者......、JAVA题,新手求解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9615885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存