Red de conocimiento informático - Aprendizaje de código fuente - Gestión de estructuras de datos de estacionamientos JAVA (¡¡¡urgente!!!)

Gestión de estructuras de datos de estacionamientos JAVA (¡¡¡urgente!!!)

Importar Java. util.

Importar Java util. /p>

Importar Java .pila;

Importar Java .vector .

Importar expresión regular de Java. >Prueba de clase pública {

CarStop CarStop privado = new CarStop(3);

Túnel CarTunnel privado = new CarTunnel();

Prueba pública no válida() {

//Almacenamiento de información del vehículo, debido a que no se ingresa de forma secuencial, se coloca en el mapa.

HashMap lt entero, Car gtcarMap = nuevo HashMaplt. Entero, Car gt();

//La hora más temprana para ingresar al garaje y la última hora para salir del garaje.

int horaInicio, horafinal

horaInicio = entero. MAX_VALUE

endTime = entero. valor mínimo;

Escáner escáner = nuevo escáner (sistema . in

//("A" o "d" o "E", int, int)

mientras(escáner . tiene siguiente(" \ \((A | D | E), (\\d ), (\ \ D )\ \)"){

escáner. siguiente ("\\((A|D|E), (\\d ), (\ \D )\ \)");

resultado de la coincidencia r = coincidencia del escáner();

p>

Cheche;

//Si ingresa uno,

if (r.group(1).equalsIgnoreCase(" A "){

//El coche ha sido grabado

if (carMap.keySet(). Contiene (integer . parse int(r . group(2))){

//Sal y establece la hora de llegada

car = carmap get(integer . parse int(r . group(2)));

car Arrival = integer . parse int(r . group (3));

} De lo contrario {

// De lo contrario, registre el automóvil

car = new car(Integer.parseInt (r.group(2)) ), entero . parse int(r . group(3)));

carMap.put(car.no, car);

Si (car.llegar lthora de inicio)hora de inicio = coche llegar;

if(car. salir gt;hora de finalización)= hora de finalización;

//La hora de salida y la hora de llegada se consideran iguales.

}else if (r.group(1).equalsIgnoreCase(" D "){

if (carMap.keySet().contains(integer . parse int(r . group (2))){

car = carmap . get(integer . parse int(r . group(2)));

car dejar = intger . .group(3));

} En caso contrario {

coche = coche nuevo(Integer.parseInt(r.group(2)), 0, entero .parse int(r . grupo (3)));

carMap.put(car.no,car);

}

If (car.arrive ltstart time)hora de inicio = auto . llegar;

if(car . salir gt;hora de finalización)hora de finalización = auto salir;

}else if (r.group(1).equalsIgnoreCase(" E "){

Descanso;

}

}

//Haga una matriz con los autos grabados y ordénelos.

Coches[] coches = coches nuevos [carmap .size()];

coches = carMap.values() toArray(cars); sort(cars, nuevo comparador ltCar gt(){

//El orden de clasificación es hora de llegada>; hora de emisión> matrícula

Comparación de int público (auto c1, auto c2) {

si (c1. llegar!=c2.llegar) devuelve c 1. llegar-C2 llegar;

si (c1. salir!=c2.dejar) devuelve c 1 . dejar- C2 . dejar;

Devolver c 1 . (hora int = hora de inicio; hora lt = hora de finalización; hora){

system out . k lt car .length;k){

car car = cars[k];

//Si un coche no ha entrado al aparcamiento, ya es la hora de salida.

if(car . dejar = = tiempo amp; ampis full() amp; amp! carStop.contains(car)){

for(int I = túnel . tamaño() -1;i gt=0;i- ){

coche c = túnel get(I);

if (c.equals(car)){

for(int j = I 1; j lttunnel . size(); j ){

System.out.println(car "Deja paso a "car" y vuelve a entrar al área de espera) ;

p>

}

tunnel.remove(car);

System.out.println(car "salir sin entrar al estacionamiento");

} En caso contrario {

System.out.println(car "dejar paso a " coche ");

}

}

} En caso contrario{

//Si llega un coche ahora.

if (car.arrive == time){

//Estacionamiento no satisfecho

if (!carStop.isFull()) {

//Entra al estacionamiento

carStop.push(car);

//Empieza a cargar

car.chargeStart = time

System.out.println(car "Entra al estacionamiento y comienza a cargar");

} De lo contrario {

//El estacionamiento está lleno, etc.

System.out.println(car "Llegó a la zona de espera y esperó");

tunnel.push(car

}

}

}

}

//Procesamiento de coches detenidos

//Excluidos los coches que salen al mismo tiempo

p>

//Busque los autos que salen en orden de último en entrar, primero en salir.

for(int k = parada de auto . size()-1; k gt=0; k - ){

car auto = parada de auto .

//Preparándose para salir

if (car.leave == time){

Car otherCar

//Todos los autos que vienen detrás de él Todos listo para ceder.

while ((otherCar = carStop.pop())!=car){

//Entra por el frente del área de espera.

tunnel.unshift(otro coche ");

System.out.println(otherCar "Prepárate para dar paso a " coche ");

}

for(int m = túnel . size()-1; m gt=0; m - ){

System.out.println(tunnel.elementat(m) "Abran paso a "coche" ;

}

System.out.println(otherCar "Salir, tiempo de estacionamiento:" (Otro coche. Salir - otro coche.

inicio de carga));

for(int m = 0; m lttunnel . size(); m ){

System. out.println(tunnel.elementat (m) "Después de ceder el paso, vuelva a entrar a la zona de espera");

}

Coche esperando;

/ /Estacionamiento Si hay espacio, espere a que se estacione el vehículo que va delante en la secuencia.

Y (!is full() amp; amp(waitingCar = Tunnel.shift())!=null ){

carStop.push(esperando coche);

//Detener el inicio del tiempo

if(esperando auto. inicio de carga = =-1){

System.out.println(esperandoCar "el tiempo de estacionamiento cambió a" tiempo ) ;

coche en espera. inicio de carga = hora;

}

System.out.println(waitingCar "Entra al estacionamiento");

}

}

}

}

}

Public static void main(String [] args){

Nueva prueba().

test();

}

}

@SuppressWarnings("serial ")

La clase CarTunnel extiende Vector ltCar gt{< / p>

Túnel de autobús()

super();

}

Horario de autobús(){

if (tamaño () == 0) devuelve nulo

return remove(0);

}

public void unshift(car car){

super.add(0, car);

}

Push público vacío(car){

super.add(car);

}

Bus pop(){

si (tamaño() == 0) devuelve nulo

Devuelve eliminar(tamaño ()-1) ;

}

}

@SuppressWarnings("serial ")

Pila de extensión Class CarStop ltCar gt{

Tamaño int privado;

Estacionamiento público (tipo entero) {

this.size = tamaño

}

público booleano isFull(){

return size()= = size;

}

bus pop(){

Devuelve super pop. ();

}

Empuje de autobús(coche coche){

if(tamaño() lt; = tamaño){

devolver super.push(car);

}de lo contrario {

devolver nulo

}

}

}

Grado del automóvil {

Número de int público;

llegada de int público

Día festivo

public int charge start =-1;

bus(entero, tiempo entero, tiempo de espera entero) {

this.no = no

this.arrive = timeIn

this.leave = timeOut

}

bus(entero, tiempo entero){

This(no, timeIn, -1 );

}

Cadena pública toString(){

Devuelve String.format("Car(d) ", no);

}

}

Resultado:

(uno, 631)

(Artículo 5, apartado 30)

(Artículo 4, apartado 20)

(1, 316)

(1, 215)

(Uno, 1, 10)

(D, 1.50)

(Artículo 2, Apartado 30)

(3, 31)

(Artículo 4, Apartado 25)

(Capítulo 5, Artículo 32)

(Capítulo 6, Artículo 40)

p>

(E, 0, 0)

Tiempo: 10

El coche (1) entra al aparcamiento y empieza a cargar.

Tiempo: 11

Tiempo: 12

Tiempo: 13

Tiempo: 14

Tiempo: 15

El coche (2) entra al aparcamiento y empieza a cargar.

Tiempo: 16

El coche (3) entra al aparcamiento y empieza a cargar.

Tiempo: 17

Tiempo: 18

Tiempo: 19

Tiempo: 20

Coche ( 4 ) Llegar y esperar en la sala de espera.

Tiempo: 21

Tiempo: 22

Tiempo: 23

Tiempo: 24

Tiempo: 25

El coche (4) se fue sin entrar al parking.

Tiempo: 26

Tiempo: 27

Tiempo: 28

Tiempo: 29

Tiempo: 30

El coche (5) llega y espera en la zona de espera.

El coche (3) se prepara para ceder el paso al coche (2)

El coche (5) se prepara para ceder el paso al coche (2)

El coche (3) ) cede el paso al coche (2) ) Cede el paso

El coche (2) arranca, tiempo de aparcamiento: 15

El coche (3) cede el paso y vuelve a entrar en la zona de espera .

El coche (5) cede y vuelve a entrar en la zona de espera.

El coche (3) entra al aparcamiento

El tiempo de aparcamiento del coche (5) se cambia a: 30.

El coche (5) entra al aparcamiento

Hora: 31

El coche (6) llega y espera en la zona de espera.

El coche (5) se prepara para ceder el paso al coche (3)

El coche (6) se prepara para ceder el paso al coche (3)

El coche (5) ) cede el paso al coche (3) ) Cede el paso

El coche (3) arranca, tiempo de aparcamiento: 15

El coche (5) cede el paso y vuelve a entrar en la zona de espera .

El coche (6) cede y vuelve a entrar en la zona de espera.

El coche (5) entra al aparcamiento

El tiempo de aparcamiento del coche (6) se modifica a: 31.

El coche (6) entra al aparcamiento

Tiempo: 32

El coche (6) se prepara para ceder el paso al coche (5)

Coche (6) Ceda el paso al coche (5)

El coche (5) arranca, tiempo de aparcamiento: 2

Cede el paso al coche (6) y vuelve a entrar en la zona de espera.

El coche (6) entra al aparcamiento

Tiempo: 33

Tiempo: 34

Tiempo: 35 minutos

Tiempo: 36

Tiempo: 37

Tiempo: 38

Tiempo: 39

Tiempo: 40

El coche (6) sale, tiempo de estacionamiento: 9

Tiempo: 41

Tiempo: 42

Tiempo: 43

Tiempo:44

Tiempo: 45 minutos

Tiempo: 46

Tiempo: 47

Tiempo: 48

Tiempo: 49

Tiempo: 50

Coche (1) sale, tiempo de estacionamiento: 40.