×
Samples Blogs Make Payment About Us Reviews 4.9/5 Order Now

Create a Program to Implement Recursion in Java Assignment Solution

July 15, 2024
Dr. Ophelia Whitethorn
Dr. Ophelia
🇺🇸 United States
Java
Dr. Ophelia Whitethorn is a distinguished alumna of the University of York, where she earned her PhD in Computer Science with a focus on cybersecurity and network protocols. With six years of experience in the field, Ophelia has successfully completed over 600 Java Homework assignments.
Key Topics
  • Instructions
Tip of the day
Use Python libraries effectively by importing only what you need. For example, if you're working with data, using libraries like pandas and numpy can save time and simplify complex tasks like data manipulation and analysis.
News
In 2024, the Biden-Harris Administration has expanded high-dosage tutoring and extended learning programs to boost academic achievement, helping programming students and others recover from pandemic-related setbacks. These initiatives are funded by federal resources aimed at improving math and literacy skills​

Instructions

Objective

Write a java assignment program to implement recursion.

program to implement recursion in java

Source Code

ANNOUNCEMENT

interface Announcements { String departure() ; String arrival(); String doNotDisturbTheDriver(); }

BICYCLE

public class Bicycle extends Vehicle implements Comparable { private double weight; private static double ACCURACY_WEIGHT = 0.5; public Bicycle() { super(1, 1); weight = 0; } public Bicycle(Person driver) { super(1,1); personsOnBoard[0][0] = driver; weight = 0; } public Bicycle(Person driver, double weight) { super(1,1); personsOnBoard[0][0] = driver; if(weight < 0) weight = 0; this.weight = weight; } public double getWeight() {return weight;} public void setWeight(double w) { if(w < 0) w = 0; weight = w; } @Override public boolean equals(Object o) { if(!(o instanceof Bicycle)) return false; Bicycle other = (Bicycle)o; double diff = Math.abs(getWeight() - other.getWeight()); return diff <= ACCURACY_WEIGHT; } @Override public void setDriver(Person p) throws InvalidDriverException { if(p.getAge() >= 3) personsOnBoard[0][0] = p; else throw new InvalidDriverException(); } @Override public int compareTo(Bicycle o) { // TODO Auto-generated method stub if(getWeight() + ACCURACY_WEIGHT < o.getWeight()) return -1; else if(getWeight() > o.getWeight() + ACCURACY_WEIGHT) return 1; return 0; } @Override public boolean loadPassenger(Person p) { // TODO Auto-generated method stub return false; } @Override public int loadPassengers(Person[] peeps) { // TODO Auto-generated method stub return 0; } @Override public String toString() { return "Bicycle [ rider= " + getDriver().getName() + " | weight= " + weight + " ]"; } }

BUS

public class Bus extends Car { public Bus(int[] numSeatsPerRow) { super(2, 2*numSeatsPerRow.length-1, numSeatsPerRow); } public Bus(Person driver, int[] numSeatsPerRow) { super(2, 2*numSeatsPerRow.length-1, driver, numSeatsPerRow); } public boolean canOpenDoor(Person p) { if(getDriver().equals(p)) // person is the driver return true; if(p.getAge() <= 5 || p.getHeight() <= 40) // not above 5 years or not above 40 inches return false; // get the index of the last populated row int rowIdx = -1; for(int i = 0; i < getNumberOfRows(); i++) { if(getNumberOfPeopleInRow(i) == 0) { rowIdx = i - 1; break; } } if(rowIdx < 0) // no persons in row return false; // check if the person is not in the last populated row int[] pos = getLocationOfPersonInVehicle(p); if(pos[0] == rowIdx) return true; return false; } public boolean canOpenWindow(Person p) { return super.canOpenWindow(p) && p.getAge() > 5; } @Override public String toString() { return "Bus is an extension of " + super.toString(); } @Override public boolean loadPassenger(Person p) { // TODO Auto-generated method stub // assign passenger to the first available seat if(getNumberOfAvailableSeats() < 1) return false; for(int i = 0; i < getNumberOfRows(); i++) { for(int j = 0; j < getNumberOfSeatsPerRow()[i]; j++) { if(getPersonInSeat(i, j) == null) // no person in this seat { setPassenger(p, i, j); return true; } } } return false; } @Override public int loadPassengers(Person[] peeps) { // TODO Auto-generated method stub int loaded = 0; for(Person p: peeps) { if(loadPassenger(p)) loaded++; } return loaded; } public String departure() {return super.departure() + "The Bus\n";}; public String arrival() {return super.arrival() + "Of The Bus\n";}; public String doNotDisturbTheDriver() {return super.doNotDisturbTheDriver() + "On The Bus\n";}; }

CAR

public class Car extends Vehicle implements Comparable, Announcements { private int numDoors; private int numWindows; public String departure() {return "All Aboard\n";}; public String arrival() {return "Everyone Out\n";}; public String doNotDisturbTheDriver() {return "No Backseat Driving\n";}; // getters public int getNumDoors() {return numDoors;} public int getNumWindows() {return numWindows;} public Car(int numDoors, int numWindows) { super(2, 2); this.numDoors = numDoors; this.numWindows = numWindows; } public Car(int numDoors, int numWindows, int numSeatsPerRow) { super(2, numSeatsPerRow); this.numDoors = numDoors; this.numWindows = numWindows; } public Car(int numDoors, int numWindows, int[] numSeatsPerRow) { super(numSeatsPerRow); this.numDoors = numDoors; this.numWindows = numWindows; } public Car(int numDoors, int numWindows, Person driver, int[] numSeatsPerRow) { super(driver, numSeatsPerRow); this.numDoors = numDoors; this.numWindows = numWindows; } boolean canOpenDoor(Person p) { if(p.getAge() <= 5) return false; int[] pos = getLocationOfPersonInVehicle(p); int row = pos[0]; int col = pos[1]; // chheck if person is in the outer seats if(col == 0 ||col == numSeatsPerRow[row]-1 || col == numSeatsPerRow[row]) { // now, check num of windows if(numDoors < 2*numberOfRows) { if(row <= (numDoors/2 - 1)) return true; else return false; } else { return true; } } else return false; } boolean canOpenWindow(Person p) { if(p.getAge() <= 2) return false; int[] pos = getLocationOfPersonInVehicle(p); int row = pos[0]; int col = pos[1]; // chheck if person is in the outer seats if(col == 0 ||col == numSeatsPerRow[row]-1 || col == numSeatsPerRow[row]) { // now, check num of windows if(numWindows < 2*numberOfRows) { if(row <= (numWindows/2 - 1)) return true; else return false; } else { return true; } } else return false; } @Override public boolean equals(Object other) { // check that object is an instance of car if(!(other instanceof Car)) return false; Car o = (Car)other; // check that both cars have same seat configuration if(getNumDoors() != o.getNumDoors()) return false; if(getNumWindows() != o.getNumWindows()) return false; if(getNumberOfMaxSeatsPerRow() != o.getNumberOfMaxSeatsPerRow()) return false; if(getNumberOfRows() != o.getNumberOfRows()) return false; // check same seats configuration for(int i = 0; i < getNumberOfRows(); i++) { if(getNumberOfSeatsPerRow()[i] != o.getNumberOfSeatsPerRow()[i]) return false; } return true; } @Override public String toString() { String seats_per_row = "["; for(int i = 0; i < getNumberOfRows(); i++) { seats_per_row += getNumberOfSeatsPerRow()[i]; if(i < getNumberOfRows()-1) seats_per_row += ","; } seats_per_row += "]"; String people_onboard = "["; int n_persons = 0; for(int i = 0; i < getNumberOfRows(); i++) { Person[]persons = getPeopleInRow(i); if(persons != null) { for(int j = 0; j < getPeopleInRow(i).length; j++) { Person thisperson = getPeopleInRow(i)[j]; if(thisperson != null) { if(n_persons == 0) people_onboard += thisperson.getName(); else people_onboard += "," + thisperson.getName(); n_persons++; } } } } people_onboard += "]"; return String.format("Car: number of doors = %02d | number of windows = %02d | number of rows = %02d | seats per row = %s | names of people on board = %s\n", getNumDoors(), getNumWindows(), getNumberOfRows(), seats_per_row, people_onboard); } @Override public int compareTo(Car o) { // TODO Auto-generated method stub int n1 = 0; // hold number of seats of calling object int n2 = 0; // hold number of seats of passed object for(int i = 0; i < getNumberOfRows(); i++) n1 += getNumberOfSeatsPerRow()[i]; for(int i = 0; i < o.getNumberOfRows(); i++) n2 += o.getNumberOfSeatsPerRow()[i]; if(n1 < n2) return -1; else if(n1 > n2) return 1; return 0; } @Override public boolean loadPassenger(Person p) { // TODO Auto-generated method stub // assign passenger to the first available seat if(getNumberOfAvailableSeats() < 1) return false; for(int i = 0; i < getNumberOfRows(); i++) { for(int j = 0; j < getNumberOfSeatsPerRow()[i]; j++) { if(getPersonInSeat(i, j) == null) // no person in this seat { if(i == 0) // first row { if(p.getAge() >= 5 && p.getHeight() >= 36) { setPassenger(p, i, j); return true; } } else { setPassenger(p, i, j); return true; } } } } return false; } @Override public int loadPassengers(Person[] peeps) { // TODO Auto-generated method stub int loaded = 0; for(Person p: peeps) { if(loadPassenger(p)) loaded++; } return loaded; } }

Related Samples

Explore our Java programming homework samples to see firsthand how our expert team tackles complex assignments. Our samples showcase comprehensive solutions that demonstrate Java proficiency and problem-solving skills. Whether you're struggling with Java basics or advanced concepts, these samples offer valuable insights into our approach to delivering top-notch programming homework help.