Answer to Question #284358 in Java | JSP | JSF for Elizabeth Nancy

Question #284358

Find latitude and longitude of utmost 20 countries, ordered by population, with a population greater or equal to the population limit given below and have atleast one currency exclusively for themselves. (countries like Madagascar, Sri Lanka but not India, USA)Your task is to find the sum of the length of all lines (in kms) that can be drawn between co-ordinates of these countries.

  • Assume radius of earth: 6371 km
  • Round length of each line and final result to 2 decimal points
  • If co-ordinates are missing for any country use 0.000 N 0.000 E
1
Expert's answer
2022-01-02T18:16:27-0500
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        int r = 6371000;// metres
        ArrayList<Country> allCountries = new ArrayList<>();
        ArrayList<Country> countries = new ArrayList<>();
        for (Country country : allCountries) {
            if (country.getNumberOfCurencies() > 1) {
                countries.add(country);
                if (countries.size() == 20) {
                    break;
                }
            }
        }
        double total = 0;
        for (int i = 0; i < countries.size() - 1; i++) {
            for (int j = i + 1; j < countries.size(); j++) {
                double fi1 = countries.get(i).getLatitude() * Math.PI / 180; // φ, λ in radians
                double fi2 = countries.get(j).getLatitude() * Math.PI / 180;
                double dFi = (countries.get(j).getLatitude() - countries.get(i).getLatitude()) * Math.PI / 180;
                double dLam = (countries.get(j).getLongitude() - countries.get(i).getLongitude()) * Math.PI / 180;
                double a = Math.sin(dFi / 2) * Math.sin(dFi / 2) +
                        Math.cos(fi1) * Math.cos(fi2) * Math.sin(dLam / 2) * Math.sin(dLam / 2);
                double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
                total += r * c;
            }
        }
        System.out.printf("Total distance: %.2f\n", total / 1000);
    }
}

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog