Initial Commit
This commit is contained in:
8
Source Code/Assignment 1/.idea/.gitignore
generated
vendored
Normal file
8
Source Code/Assignment 1/.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/../../../../../../../:\ProgrammingProjects\JavaProjects\JavaYear1\CS1083\Assignment 1\.idea/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
7
Source Code/Assignment 1/.idea/codeStyles/Project.xml
generated
Normal file
7
Source Code/Assignment 1/.idea/codeStyles/Project.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<ScalaCodeStyleSettings>
|
||||
<option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
|
||||
</ScalaCodeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
5
Source Code/Assignment 1/.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
Source Code/Assignment 1/.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
6
Source Code/Assignment 1/.idea/discord.xml
generated
Normal file
6
Source Code/Assignment 1/.idea/discord.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DiscordProjectSettings">
|
||||
<option name="show" value="PROJECT" />
|
||||
</component>
|
||||
</project>
|
6
Source Code/Assignment 1/.idea/misc.xml
generated
Normal file
6
Source Code/Assignment 1/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
8
Source Code/Assignment 1/.idea/modules.xml
generated
Normal file
8
Source Code/Assignment 1/.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/Assignment 1.iml" filepath="$PROJECT_DIR$/Assignment 1.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
20
Source Code/Assignment 1/Assignment 1.iml
Normal file
20
Source Code/Assignment 1/Assignment 1.iml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/jetbrains/annotations/20.1.0/annotations-20.1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
Binary file not shown.
BIN
Source Code/Assignment 1/out/production/Assignment 1/Ferry.class
Normal file
BIN
Source Code/Assignment 1/out/production/Assignment 1/Ferry.class
Normal file
Binary file not shown.
Binary file not shown.
86
Source Code/Assignment 1/src/Driver.java
Normal file
86
Source Code/Assignment 1/src/Driver.java
Normal file
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
This class is the driver the program.
|
||||
@author Isaac Shoebottom (3429069)
|
||||
*/
|
||||
public class Driver {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Vehicle vehicle1 = new Vehicle(2, 4, 450.45);
|
||||
Vehicle vehicle2 = new Vehicle(2, 8, 636.30);
|
||||
Vehicle vehicle3 = new Vehicle(4, 12, 4500);
|
||||
Vehicle vehicle4 = new Vehicle(16, 4, 100);
|
||||
Vehicle vehicle5 = new Vehicle(16, 40, 100);
|
||||
Ferry ferry = new Ferry(3, 10, 16, 3333);
|
||||
|
||||
|
||||
if (ferry.addVehicle(vehicle1)) {
|
||||
System.out.println("Vehicle " + vehicle1.getUniqueID() + " added");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle1.getUniqueID());
|
||||
}
|
||||
if (ferry.addVehicle(vehicle1)) {
|
||||
System.out.println("Vehicle " + vehicle1.getUniqueID() + " added!");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle1.getUniqueID());
|
||||
}
|
||||
if (ferry.addVehicle(vehicle2)) {
|
||||
System.out.println("Vehicle " + vehicle2.getUniqueID() + " added!");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle2.getUniqueID());
|
||||
}
|
||||
if (ferry.addVehicle(vehicle3)) {
|
||||
System.out.println("Vehicle " + vehicle3.getUniqueID() + " added!");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle3.getUniqueID());
|
||||
}
|
||||
if (ferry.addVehicle(vehicle3)) {
|
||||
System.out.println("Vehicle " + vehicle3.getUniqueID() + " added!");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle3.getUniqueID());
|
||||
}
|
||||
if (ferry.addVehicle(vehicle4)) {
|
||||
System.out.println("Vehicle " + vehicle4.getUniqueID() + " added!");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle4.getUniqueID());
|
||||
}
|
||||
if (ferry.addVehicle(vehicle5)) {
|
||||
System.out.println("Vehicle " + vehicle5.getUniqueID() + " added!");
|
||||
} else {
|
||||
System.out.println("Couldn't add Vehicle " + vehicle5.getUniqueID());
|
||||
}
|
||||
if (ferry.removeVehicle(vehicle5)) {
|
||||
System.out.println("Vehicle " + vehicle5.getUniqueID() + " removed!");
|
||||
} else {
|
||||
System.out.println("Couldn't remove Vehicle " + vehicle5.getUniqueID());
|
||||
}
|
||||
if (ferry.removeVehicle(vehicle2)) {
|
||||
System.out.println("Vehicle " + vehicle2.getUniqueID() + " removed!");
|
||||
} else {
|
||||
System.out.println("Couldn't remove Vehicle " + vehicle2.getUniqueID());
|
||||
}
|
||||
|
||||
if (ferry.changePassengersOnVehicle(vehicle1,7)) {
|
||||
System.out.println("Vehicle " + vehicle1.getUniqueID() + " passenger's changed!");
|
||||
} else {
|
||||
System.out.println("Couldn't change passengers");
|
||||
}
|
||||
if (ferry.changePassengersOnVehicle(vehicle1, 69)) {
|
||||
System.out.println("Vehicle " + vehicle1.getUniqueID() + " passenger's changed!");
|
||||
} else {
|
||||
System.out.println("Couldn't change passengers");
|
||||
}
|
||||
if (ferry.changePassengersOnVehicle(vehicle4, 30)) {
|
||||
System.out.println("Vehicle " + vehicle5.getUniqueID() + " passenger's changed!");
|
||||
} else {
|
||||
System.out.println("Couldn't change passengers");
|
||||
}
|
||||
|
||||
|
||||
System.out.println(ferry.weightReport());
|
||||
System.out.println(ferry.vehicleList());
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
146
Source Code/Assignment 1/src/Ferry.java
Normal file
146
Source Code/Assignment 1/src/Ferry.java
Normal file
@@ -0,0 +1,146 @@
|
||||
/**
|
||||
This class is the ferry object.
|
||||
@author Isaac Shoebottom (3429069)
|
||||
*/
|
||||
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Ferry {
|
||||
int maximumNumberOfVehicles;
|
||||
int maximumNumberOfAxles;
|
||||
int maximumNumberOfPassengers;
|
||||
double maxWeight;
|
||||
int numberOfVehicles;
|
||||
int numberOfAxles;
|
||||
int numberOfPassengers;
|
||||
double weight;
|
||||
Vehicle[] vehicles = new Vehicle[0];
|
||||
|
||||
|
||||
Ferry(int maximumNumberOfVehicles, int maximumNumberOfAxles, int maximumNumberOfPassengers, double maxWeight) {
|
||||
this.maximumNumberOfVehicles = maximumNumberOfVehicles;
|
||||
this.maximumNumberOfAxles = maximumNumberOfAxles;
|
||||
this.maximumNumberOfPassengers = maximumNumberOfPassengers;
|
||||
this.maxWeight = maxWeight;
|
||||
}
|
||||
|
||||
public boolean addVehicle(Vehicle newVehicle) {
|
||||
for(Vehicle vehicle: vehicles) {
|
||||
if (newVehicle.getUniqueID() == vehicle.getUniqueID()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (newVehicle.getWeight() + weight > maxWeight ||
|
||||
newVehicle.getAxles() +numberOfAxles > maximumNumberOfAxles ||
|
||||
newVehicle.getNumberOfPassengers() + numberOfPassengers > maximumNumberOfPassengers ||
|
||||
1+numberOfVehicles > maximumNumberOfVehicles)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
int counter = vehicles.length;
|
||||
vehicles = Arrays.copyOf(vehicles, vehicles.length + 1);
|
||||
vehicles[counter] = newVehicle;
|
||||
addOrRemoveSpecs(newVehicle, 1);
|
||||
return true;
|
||||
}
|
||||
/*
|
||||
public boolean addVehicles(Vehicle... newVehicles) {
|
||||
double[] vehicleInfo = calculateTotalSpecsForArray(newVehicles);
|
||||
//axles = 1, passengers = 2, weight = 0, vehicles = 3
|
||||
if (vehicleInfo[0] > maxWeight ||
|
||||
vehicleInfo[1] > maximumNumberOfAxles ||
|
||||
vehicleInfo[2] > maximumNumberOfPassengers ||
|
||||
vehicleInfo[3] > maximumNumberOfVehicles ||
|
||||
doIDsMatch(vehicles, newVehicles))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
addOrRemoveSpecs(newVehicles, 1);
|
||||
int counter = vehicles.length;
|
||||
vehicles = Arrays.copyOf(vehicles, vehicles.length + newVehicles.length);
|
||||
for (Vehicle vehicle: newVehicles) {
|
||||
vehicles[counter] = vehicle;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
*/
|
||||
public boolean removeVehicle(Vehicle newVehicle) {
|
||||
for (int i = 0; i < vehicles.length; i++) {
|
||||
if (vehicles[i].getUniqueID() == newVehicle.getUniqueID()) {
|
||||
vehicles[i] = null;
|
||||
addOrRemoveSpecs(newVehicle, -1);
|
||||
vehicles = Arrays.stream(vehicles).filter(Objects::nonNull).toArray(Vehicle[]::new);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void addOrRemoveSpecs(Vehicle vehicle, int sign) {
|
||||
numberOfVehicles += sign;
|
||||
numberOfAxles += sign*vehicle.getAxles();
|
||||
numberOfPassengers += sign*vehicle.getNumberOfPassengers();
|
||||
weight += sign*vehicle.getWeight();
|
||||
}
|
||||
|
||||
/*
|
||||
private double[] calculateTotalSpecsForArray(Vehicle[] tempVehicles) {
|
||||
double totalWeight = 0;
|
||||
int totalAxles = 0;
|
||||
int totalPassengers = 0;
|
||||
int totalNumberOfCars = tempVehicles.length;
|
||||
for (Vehicle vehicle: tempVehicles) {
|
||||
totalWeight += vehicle.getWeight();
|
||||
totalAxles += vehicle.getAxles();
|
||||
totalPassengers += vehicle.getNumberOfPassengers();
|
||||
}
|
||||
return new double[]{totalWeight, totalAxles, totalPassengers, totalNumberOfCars};
|
||||
}
|
||||
|
||||
private void addOrRemoveSpecs(Vehicle[] tempVehicles, int sign) {
|
||||
double[] tempSpecs = calculateTotalSpecsForArray(tempVehicles);
|
||||
numberOfAxles += sign*tempSpecs[1];
|
||||
numberOfPassengers += sign*tempSpecs[2];
|
||||
numberOfVehicles += sign*tempSpecs[3];
|
||||
weight += sign*tempSpecs[0];
|
||||
}
|
||||
private boolean doIDsMatch(Vehicle[] existingVehicles, Vehicle[] newVehicles) {
|
||||
for (Vehicle vehicle: existingVehicles) {
|
||||
for (Vehicle newVehicle: newVehicles) {
|
||||
if (vehicle.getUniqueID() == newVehicle.getUniqueID()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
public boolean changePassengersOnVehicle(Vehicle vehicle, int newNumberOfPassengers) {
|
||||
if ((newNumberOfPassengers-vehicle.getNumberOfPassengers())+newNumberOfPassengers > maximumNumberOfPassengers) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
vehicle.setNumberOfPassengers(newNumberOfPassengers);
|
||||
numberOfPassengers += newNumberOfPassengers - vehicle.getNumberOfPassengers();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public String weightReport() {
|
||||
return ("The weight left on the ferry is " + (maxWeight - weight) + " Kg");
|
||||
}
|
||||
public String vehicleList() {
|
||||
String list = "";
|
||||
DecimalFormat df = new DecimalFormat("00,000.00");
|
||||
for(Vehicle vehicle: vehicles) {
|
||||
String patternedWeight = df.format(vehicle.getWeight());
|
||||
list += vehicle.getUniqueID() + "\t" + patternedWeight + " kg\n";
|
||||
}
|
||||
list+= "Total Weight:\t" + weight + "\n";
|
||||
list+= "Total Axles:\t" + numberOfAxles + "\n";
|
||||
list+= "Total Passengers:\t" + numberOfPassengers+ "\n";
|
||||
return list;
|
||||
}
|
||||
}
|
38
Source Code/Assignment 1/src/Vehicle.java
Normal file
38
Source Code/Assignment 1/src/Vehicle.java
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
This class is the vehicle object.
|
||||
@author Isaac Shoebottom (3429069)
|
||||
*/
|
||||
|
||||
public class Vehicle {
|
||||
private static long uniqueIDTracker = 100;
|
||||
private final long uniqueID;
|
||||
private int numberOfPassengers;
|
||||
private final int axles;
|
||||
private final double weight;
|
||||
|
||||
Vehicle(int numberOfPassengers, int wheels,double weight ) {
|
||||
this.weight = weight;
|
||||
this.axles = (wheels > 2) ? wheels/2 : 0;
|
||||
this.numberOfPassengers = numberOfPassengers;
|
||||
uniqueID = uniqueIDTracker + 1;
|
||||
uniqueIDTracker++;
|
||||
}
|
||||
|
||||
|
||||
public double getWeight() {
|
||||
return weight;
|
||||
}
|
||||
public int getAxles() {
|
||||
return axles;
|
||||
}
|
||||
public int getNumberOfPassengers() {
|
||||
return numberOfPassengers;
|
||||
}
|
||||
public long getUniqueID() {
|
||||
return uniqueID;
|
||||
}
|
||||
public void setNumberOfPassengers(int numberOfPassengers) {
|
||||
this.numberOfPassengers = numberOfPassengers;
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user