w3resource

Java: Compute the distance between two points on the surface of earth

Java Basic: Exercise-36 with Solution

Write a Java program to compute the distance between two points on the earth's surface.

Distance between the two points [ (x1,y1) & (x2,y2)]
d = radius * arccos(sin(x1) * sin(x2) + cos(x1) * cos(x2) * cos(y1 - y2))
Radius of the earth r = 6371.01 Kilometers

Test Data:
Input the latitude of coordinate 1: 25
Input the longitude of coordinate 1: 35
Input the latitude of coordinate 2: 52.5
Input the longitude of coordinate 2: 35.5

Pictorial Presentation:

Java: Compute the distance between two points on the surface of earth

Sample Solution:

Java Code:

import java.util.Scanner;

public class Exercise36 {
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        // Prompt the user to input the latitude and longitude of coordinate 1
        System.out.print("Input the latitude of coordinate 1: ");
        double lat1 = input.nextDouble();
        System.out.print("Input the longitude of coordinate 1: ");
        double lon1 = input.nextDouble();
        
        // Prompt the user to input the latitude and longitude of coordinate 2
        System.out.print("Input the latitude of coordinate 2: ");
        double lat2 = input.nextDouble();
        System.out.print("Input the longitude of coordinate 2: ");
        double lon2 = input.nextDouble();

        // Calculate and display the distance between the two coordinates
        System.out.print("The distance between those points is: " + distance_Between_LatLong(lat1, lon1, lat2, lon2) + " km\n");
    }

    // Points will be converted to radians before calculation
    public static double distance_Between_LatLong(double lat1, double lon1, double lat2, double lon2) {
        // Convert latitude and longitude to radians
        lat1 = Math.toRadians(lat1);
        lon1 = Math.toRadians(lon1);
        lat2 = Math.toRadians(lat2);
        lon2 = Math.toRadians(lon2);

        // Earth's mean radius in kilometers
        double earthRadius = 6371.01;

        // Calculate the distance using the haversine formula
        return earthRadius * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon1 - lon2));
    }
}

Explanation:

In the exercise above -

  • First, it uses the "Scanner" class to obtain user input.
  • The user is prompted to input the latitude and longitude of two coordinates:
    • Latitude and longitude of coordinate 1 are read into the variables 'lat1' and 'lon1'.
    • Latitude and longitude of coordinate 2 are read into the variables 'lat2' and 'lon2'.
  • The code then calls a separate method named "distance_Between_LatLong()" and passes the latitude and longitude values of both coordinates as arguments.
  • Inside the "distance_Between_LatLong()" method:
    • It converts latitude and longitude values from degrees to radians using the "Math.toRadians()" method to perform trigonometric calculations.
    • It calculates the distance between the two coordinates using the Haversine formula for calculating distances on a sphere.
    • The calculated distance is returned as a double, representing the distance in kilometers.
  • Finally, in the "main() method, the result of the "distance_Between_LatLong()" method is printed, displaying the distance between the two coordinates in kilometers.

Sample Output:

Input the latitude of coordinate 1: 25                                                                        
Input the longitude of coordinate 1: 35                                                                       
Input the latitude of coordinate 2: 52.5                                                                      
Input the longitude of coordinate 2: 35.5                                                                     
The distance between those points is: 3058.15512920181 km 

Flowchart:

Flowchart: Java exercises: Compute the distance between two points on the surface of earth

Java Code Editor:

Previous: Write a Java program to compute the area of a polygon.
Next: Write a Java program to reverse a string.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/java-exercises/basic/java-basic-exercise-36.php