package cse1030; import java.util.Collection; /** * The class DistanceUtility contains constants and * methods to convert between kilometres and miles. * * @author CSE1030Z */ public class DistanceUtility { /** * The number of kilometres in a mile. */ public static final double KILOMETRES_PER_MILE = 1.609344; /** * The number of miles in a kilometre. */ public static final double MILES_PER_KILOMETRES = 1.0 / KILOMETRES_PER_MILE; /** * Converts distances in kilometres to miles. * * @param km The distance to convert. If km * is negative then the returned distance is * also negative. * @return Distance in miles. */ public static double kilometresToMiles(double km) { double result = km / KILOMETRES_PER_MILE; return result; } /** * Converts distances in miles to kilometres. * * @param miles The distance to convert. If miles * is negative then the returned distance is * also negative. * @return Distance in kilometres. */ public static double milesToKilometres(double miles) { double result = miles * KILOMETRES_PER_MILE; return result; } /** * Converts distances in kilometres to miles for arrays. * If an element of the array argument is negative the * corresponding element of the returned array is also * negative. * * @param km The distances to convert. * @pre. km.length > 0 * @return Distances in miles in an array with * length == km.length. */ public static double[] kilometresToMiles(double[] km) { double miles[] = new double[km.length]; for (int i = 0; i < km.length; i++) { miles[i] = kilometresToMiles(km[i]); } return miles; } /** * Converts distances in miles to kilometres for arrays. * If an element of the array argument is negative the * corresponding element of the returned array is also * negative. * * @param miles The distances to convert. * @pre. miles.length > 0 * @return Distances in kilometres in an array with * length == miles.length. */ public static double[] milesToKilometres(double[] miles) { double km[] = new double[miles.length]; for (int i = 0; i < miles.length; i++) { km[i] = milesToKilometres(miles[i]); } return km; } /** * Converts distances in kilometres to miles for a Collection. * If an element of the collection is negative the * corresponding element of the returned array is also * negative. * * @param km The distances to convert. * @pre. km.size() > 0 * @return Distances in miles in an array with * length == km.size(). */ public static double[] kilometresToMiles(Collection km) { double[] miles = new double[km.size()]; int i = 0; for (Number n : km) { miles[i] = kilometresToMiles(n.doubleValue()); i++; } return miles; } /** * Converts distances in miles to kilometres for a Collection. * If an element of the collection is negative the * corresponding element of the returned array is also * negative. * * @param miles The distances to convert. * @pre. miles.size() > 0 * @return Distances in kilometres in an array with * length == miles.size(). */ public static double[] milesToKilometres(Collection miles) { double[] km = new double[miles.size()]; int i = 0; for (Number n : miles) { km[i] = milesToKilometres(n.doubleValue()); i++; } return km; } }