summaryrefslogtreecommitdiff
path: root/src/Q4/BanffMarathonRunner.java
diff options
context:
space:
mode:
authormo <mo.khan@gmail.com>2019-05-25 15:27:51 -0600
committermo <mo.khan@gmail.com>2019-05-25 15:27:51 -0600
commit856c35dbc7080922bfff7c10a7a844a9d0a1cd65 (patch)
tree739b413bc2a29adc35229ef2fd9b30581601a206 /src/Q4/BanffMarathonRunner.java
parent46f68298527e0c59b9f34003b687259477093fde (diff)
start assignment 2
Diffstat (limited to 'src/Q4/BanffMarathonRunner.java')
-rw-r--r--src/Q4/BanffMarathonRunner.java148
1 files changed, 0 insertions, 148 deletions
diff --git a/src/Q4/BanffMarathonRunner.java b/src/Q4/BanffMarathonRunner.java
deleted file mode 100644
index d9f5617..0000000
--- a/src/Q4/BanffMarathonRunner.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Assignment 1, COMP268 Class: BanffMarathonRunner.java
- *
- * @description Represents a marathon runner
- * @author: mo khan Student ID: 3431709
- * @date May 8, 2019
- * @version 1.0
- */
-package Q4;
-
-import Q1.*;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-public class BanffMarathonRunner extends AddressBook {
- private int time;
- private int years;
-
- /**
- * Constructs a BanffMarathonRunner object.
- *
- * @param firstName the first name of the runner
- * @param lastName the last name of the runner
- * @param time the time it took the runner to complete the marathon
- * @param years the number of years they participated
- */
- public BanffMarathonRunner(String firstName, String lastName, int time, int years) {
- super(firstName, "", lastName);
- this.time = time;
- this.years = years;
- }
-
- /**
- * Performs a comparison of this runner with another based on the time it took them to complete
- * the marathon. Because java generics does not allow implementing a generic interface with
- * different type parameters, this code assumes the AddressBook is an instance of a Runner.
- *
- * @param other the other runner to compare against
- * @return a negative integer, zero, or a positive integer as the first argument is less than,
- * equal to, or greater than the second.
- */
- public int compareTo(AddressBook other) {
- BanffMarathonRunner runner = (BanffMarathonRunner) other;
- return Integer.compare(this.time, runner.time);
- }
-
- /**
- * Return the time take to complete the race.
- *
- * @return the time taken to complete the race
- */
- public int getTime() {
- return this.time;
- }
-
- /**
- * Returns a string representation of the runner.
- *
- * @return The first name + the # of years that they participated.
- */
- @Override
- public String toString() {
- return super.getFirstName() + " " + this.years;
- }
-
- /**
- * Sorts the list of runners based on time, then returns the fastest runner.
- *
- * @param runners the list of runners.
- * @return the fastest runner
- */
- public static BanffMarathonRunner getFastestRunner(BanffMarathonRunner[] runners) {
- Arrays.sort(runners);
- return runners[0];
- }
-
- /**
- * Sorts the list of runners based on time, then returns the second fastest runner.
- *
- * @param runners the list of runners.
- * @return the second fastest runner
- */
- public static BanffMarathonRunner getSecondFastestRunner(BanffMarathonRunner[] runners) {
- Arrays.sort(runners);
- return runners[1];
- }
-
- /**
- * Calculates the average time that it took the runners to complete the marathon.
- *
- * @param runners the array of runners.
- * @return the average time taken to complete the marathon
- */
- public static int getAverageTime(BanffMarathonRunner[] runners) {
- int sum = 0;
- for (BanffMarathonRunner runner : runners) sum += runner.time;
- return sum / runners.length;
- }
-
- /**
- * Returns the runners that finished the marathon in above or equal to average time.
- *
- * @param runners the list of runners
- * @return the list of runners that finished the marathon in above average time.
- */
- public static String getAboveAverageRunners(BanffMarathonRunner[] runners) {
- int average = getAverageTime(runners);
- ArrayList<String> winners = new ArrayList<String>();
-
- for (BanffMarathonRunner runner : runners)
- if (runner.time <= average) winners.add(runner.toString());
-
- return String.join(System.lineSeparator(), winners);
- }
-
- public static void main(String[] args) {
- BanffMarathonRunner[] runners = {
- new BanffMarathonRunner("Elena", "Brandon", 341, 1),
- new BanffMarathonRunner("Thomas", "Molson", 273, 2),
- new BanffMarathonRunner("Hamilton", "Winn", 278, 5),
- new BanffMarathonRunner("Suzie", "Sarandin", 329, 7),
- new BanffMarathonRunner("Philip", "Winne", 445, 9),
- new BanffMarathonRunner("Alex", "Trebok", 275, 3),
- new BanffMarathonRunner("Emma", "Pivoto", 275, 4),
- new BanffMarathonRunner("John", "Lenthen", 243, 1),
- new BanffMarathonRunner("James", "Lean", 334, 1),
- new BanffMarathonRunner("Jane", "Ostin", 412, 1),
- new BanffMarathonRunner("Emily", "Car", 393, 4),
- new BanffMarathonRunner("Daniel", "Hamshire", 299, 4),
- new BanffMarathonRunner("Neda", "Bazdar", 343, 3),
- new BanffMarathonRunner("Aaron", "Smith", 317, 6),
- new BanffMarathonRunner("Kate", "Hen", 265, 8)
- };
-
- BanffMarathonRunner fastestRunner = BanffMarathonRunner.getFastestRunner(runners);
- System.out.println(fastestRunner.getFirstName());
- System.out.println(fastestRunner.getHomeAddress());
- System.out.println(fastestRunner.getTime());
-
- BanffMarathonRunner secondFastestRunner = BanffMarathonRunner.getSecondFastestRunner(runners);
- System.out.println(secondFastestRunner.getFirstName());
- System.out.println(secondFastestRunner.getHomeAddress());
- System.out.println(secondFastestRunner.getTime());
- System.out.println(secondFastestRunner.getTime() - fastestRunner.getTime());
-
- System.out.print(BanffMarathonRunner.getAboveAverageRunners(runners));
- }
-}