Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

import java.io.*; import java.util.*; public class Main { public static class Ve

ID: 3625591 • Letter: I

Question


import java.io.*;
import java.util.*;

public class Main {

public static class Vehicle {

String licensePlateNo;
char flag;

public Vehicle() {
}

String getRegistrationNum() {
return licensePlateNo;
}

public void setArrivalDepartureFlag(char flg) {
flag = flg;
}

void setRegistrationNum(String regNum) {
licensePlateNo = regNum;
}

char getArrivalDepartureFlag() {
return flag;
}
}

public static void main(String[] args)throws IOException {
VehicleStack vehicleStack = new VehicleStack();
Scanner sin = new Scanner(System.in);
Scanner sin1 = new Scanner(System.in);
boolean result = true;
while (true) {
String regNum = null;
Vehicle vehicle = new Vehicle();
System.out.println("1.Push car");
System.out.println("2.Remove car");
System.out.println("3.Display");
System.out.println("4.Exit");
System.out.println("Please enter your choice:");
int choice = sin.nextInt();
switch (choice) {
case 1:
System.out.println("1.Please enter Car registration Number");
regNum = sin1.nextLine();
vehicle.setArrivalDepartureFlag('A');
vehicle.setRegistrationNum(regNum);
result = vehicleStack.pushVehicle(vehicle);
if (!result) {
System.out.println("Vehicle garage is full(Max size:10)");
}
break;
case 2:
vehicleStack.display();
System.out.println("1.Please enter Car license plate number to remove");
regNum = sin1.nextLine();
result = vehicleStack.popVehicle(regNum);
if (!result) {
System.out.println("Vehicle number " + regNum + " was not found in the garage.");
}
break;
case 3:
vehicleStack.display();
break;
case 4:
System.exit(0);
}
}

}

private static class VehicleStack {

public VehicleStack() {
vehicleStack = new Stack<Vehicle>();
}

private static class QueueDeparture {

public QueueDeparture() {
vehicleQueue = new LinkedList<Vehicle>();
}
Queue<Vehicle> vehicleQueue;

public boolean insertIntoQueue(Vehicle vehicle) {
return vehicleQueue.offer(vehicle);
}

public Vehicle deleteFromQueue() {
return vehicleQueue.poll();
}
}
Stack<Vehicle> vehicleStack;

public boolean pushVehicle(Vehicle vehicle) {
if (vehicleStack.size() < 10) {
vehicleStack.push(vehicle);
return true;
} else {
return false;
}
}

public boolean popVehicle(String licensePlateNo) {
int i = 0;
for (i = 0; i < vehicleStack.size(); i++) {
if ((vehicleStack.get(i)).getRegistrationNum().equals(licensePlateNo)) {
break;
}
}
if (i == vehicleStack.size()) {
return false;
} else {
QueueDeparture queue = new QueueDeparture();
Vehicle tempVehicle = new Vehicle();
while (true) {
if ((vehicleStack.peek().getRegistrationNum()).equals(licensePlateNo)) {
vehicleStack.pop();
while ((tempVehicle = queue.deleteFromQueue()) != null) {
vehicleStack.push(tempVehicle);
}
break;
} else {
boolean inserted = queue.insertIntoQueue(vehicleStack.pop());
}
}
}
return true;
}

void display() {

for (int i = 0; i < vehicleStack.size(); i++) {
System.out.println("Flag:" + vehicleStack.get(i).getArrivalDepartureFlag()
+ " Registration number:" + vehicleStack.get(i).getRegistrationNum());
}
System.out.println(" ------ ");
}
}
}

Explanation / Answer

//Header file section

import java.io.*;

import java.util.*;

public class Main

{

//declaring an inner class vehicle

      public static class Vehicle

      {

        //data fields

            String licensePlateNo;

            char flag;

        //constructor

            public Vehicle()

            {

            }

        //returns registration number

            String getRegistrationNum()

            {

                  return licensePlateNo;

            }

        //sets flag value

            public void setArrivalDepartureFlag(char flg)

            {

                  flag = flg;

            }

        //sets registration number

            void setRegistrationNum(String regNum)

            {

                  licensePlateNo = regNum;

            }

         //returns flag value

            char getArrivalDepartureFlag()

            {

                  return flag;

            }

      }

    //main function

      public static void main(String[] args)throws IOException

      {

            //declaring vehicleStack object

            VehicleStack vehicleStack = new VehicleStack();

            //creating scanner class object

            Scanner sin = new Scanner(System.in);

            Scanner sin1 = new Scanner(System.in);

            boolean result = true;

            //infinite loop repeats up to option 4 entered

            while (true)

            {

                  String regNum = null;

                  Vehicle vehicle = new Vehicle();

                  System.out.println("1.Push car");

                  System.out.println("2.Remove car");

                  System.out.println("3.Display");

                  System.out.println("4.Exit");

                  System.out.println("Please enter your choice:");

                  int choice = sin.nextInt();

                  switch (choice)

                  {

                        case 1:

                              //input regidtration number

                              System.out.println("1.Please enter Car registration Number");

                              regNum = sin1.nextLine();

                              //function call to set flag

                              vehicle.setArrivalDepartureFlag('A');

                              //function call to set Registration Number

                              vehicle.setRegistrationNum(regNum);

                              result = vehicleStack.pushVehicle(vehicle);

                              if (!result)

                              {

                                    System.out.println("Vehicle garage is full(Max size:10)");

                              }

                              break;

                        case 2:

                              //function call to display

                              vehicleStack.display();

                              System.out.println("1.Please enter Car license plate number to remove");

                              regNum = sin1.nextLine();

                              result = vehicleStack.popVehicle(regNum);

                              if (!result)

                              {

                                    System.out.println("Vehicle number " + regNum + " was not found in the garage.");

                              }

                              break;

                        case 3:

                              //function call to display

                              vehicleStack.display();

                              break;

                        case 4:

                              //exit program

                              System.exit(0);

                  }

            }

      }

    //declaring VehicleStack

      private static class VehicleStack

      {

       //constructor

            public VehicleStack()

            {

                  vehicleStack = new Stack<Vehicle>();

                  }

         //inner class QueueDeparture in vehicleStack

            private static class QueueDeparture

            {

                  public QueueDeparture()

                  {

                        vehicleQueue = new LinkedList<Vehicle>();

                        }

                  Queue<Vehicle> vehicleQueue;

                  public boolean insertIntoQueue(Vehicle vehicle)

                  {

                        return vehicleQueue.offer(vehicle);

                  }

                  public Vehicle deleteFromQueue()

                  {

                        return vehicleQueue.poll();

                  }

            }

            Stack<Vehicle> vehicleStack;

         //pushVehicle function returns boolean value

            public boolean pushVehicle(Vehicle vehicle)

            {

                  if (vehicleStack.size() < 10)

                  {

                        vehicleStack.push(vehicle);

                        return true;

                  }

                  else

                  {

                        return false;

                  }

            }

         //popVehicle function returns boolean value if vehicle

        //stack contain elements

      public boolean popVehicle(String licensePlateNo)

      {

      int i = 0;

      for (i = 0; i < vehicleStack.size(); i++)

      {

         if ((vehicleStack.get(i)).getRegistrationNum()

         .equals(licensePlateNo))

            {

                  break;

            }

      }

      if (i == vehicleStack.size())

      {

      return false;

      }

      else

      {

      QueueDeparture queue = new QueueDeparture();

      Vehicle tempVehicle = new Vehicle();

      while (true)

      {

            if ((vehicleStack.peek().

                getRegistrationNum()).equals(licensePlateNo))

            {

            vehicleStack.pop();

            while ((tempVehicle = queue.deleteFromQueue()) != null)

            {

                  vehicleStack.push(tempVehicle);

            }

            break;

      }

      else

        {

            boolean inserted =

            queue.insertIntoQueue(vehicleStack.pop());

      }

      }

      }

                  return true;

            }

         //function displays elements of stack

            void display()

            {

            for (int i = 0; i < vehicleStack.size(); i++)

            {

            System.out.println("Flag:"

            + vehicleStack.get(i).getArrivalDepartureFlag()

            + " Registration number:" +

               vehicleStack.get(i).getRegistrationNum());

            }

                  System.out.println(" ------ ");

            }

      }

}