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 extends Number> 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 extends Number> miles) {
double[] km = new double[miles.size()];
int i = 0;
for (Number n : miles) {
km[i] = milesToKilometres(n.doubleValue());
i++;
}
return km;
}
}