Question: In this problem we are going to use ArrayLists and classes to design a road trip. You have three classes: GeoLocation.java which represents a geo
In this problem we are going to use ArrayLists and classes to design a road trip.
You have three classes: GeoLocation.java which represents a geo location. A RoadTrip.java class which represents a road trip (or an ordered list of places), and a RoadTripTester.java class which brings them all together.
In GeoLocation.java:
Add a private instance variable called name which is a String. This represents the name of the location.
Modify the Geolocation class constructor so that it is now of the format
public GeoLocation(String name, double theLatitude, double theLongitude)
Add a getter method for name called getName().
Update the toString so that it returns a String of the format
San Francisco (37.7833, -122.4167)
Now, youll also need to create a RoadTrip class. The RoadTrip stores an ordered list of locations, so youll need to have an ArrayList. Youll also need to support these methods.
// Create a GeoLocation and add it to the road trip public void addStop(String name, double latitude, double longitude) // Get the total number of stops in the trip public int getNumberOfStops() // Get the total miles of the trip public double getTripLength() // Return a formatted toString of the trip public String toString()
Weve given you a tester program to help get you started.
The output from that program would be:
1. San Francisco (37.7833, -122.4167) 2. Los Angeles (34.052235, -118.243683) 3. Las Vegas (36.114647, -115.172813) Stops: 3 Total Miles: 572.9708850442705
Code below was given to be edited and used
public class RoadTripTester { public static void main(String[] args) { RoadTrip rt = new RoadTrip(); rt.addStop("San Francisco", 37.7833, -122.4167); rt.addStop("Los Angeles", 34.052235, -118.243683); rt.addStop("Las Vegas", 36.114647, -115.172813);
System.out.println(rt); System.out.println("Stops: " + rt.getNumberOfStops()); System.out.println("Total Miles: " + rt.getTripLength()); } }
import java.util.ArrayList;
public class RoadTrip { // Create a GeoLocation and add it to the road trip public void addStop(String name, double latitude, double longitude) // Get the total number of stops in the trip public int getNumberOfStops() // Get the total miles of the trip public double getTripLength() // Return a formatted toString of the trip public String toString() }
public class GeoLocation { // Earth radius in miles public static final double RADIUS = 3963.1676;
private double latitude; private double longitude;
/** * Constructs a geo location object with given latitude and longitude */ public GeoLocation(double theLatitude, double theLongitude) { latitude = theLatitude; longitude = theLongitude; }
/** * Returns the latitude of this geo location */ public double getLatitude() { return latitude; }
/** * returns the longitude of this geo location */ public double getLongitude() { return longitude; }
// returns a string representation of this geo location public String toString() { return "latitude: " + latitude + ", longitude: " + longitude; }
// returns the distance in miles between this geo location and the given // other geo location public double distanceFrom(GeoLocation other) { double lat1 = Math.toRadians(latitude); double long1 = Math.toRadians(longitude); double lat2 = Math.toRadians(other.latitude); double long2 = Math.toRadians(other.longitude); // apply the spherical law of cosines with a triangle composed of the // two locations and the north pole double theCos = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(long1 - long2); double arcLength = Math.acos(theCos); return arcLength * RADIUS; } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
