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题,新手求解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)