2016-04-14 7 views
1

ich mein Programm wie folgt begonnen:Wie kann ich die Entfernung zwischen zwei Städten zu drucken, angesichts ihrer Breiten- und Längen

public static void main(String[] args) 
     { 
    if(args.length < 2) 
    { 
    System.err.println("Usage: java -jar lab5.jar infile outfile"); 
    System.exit(99); 
    } 

    Cruncher dataManipulator = new Cruncher(args[0], args[1]); 

    dataManipulator.openFiles(); 
    dataManipulator.findDistance(); 
    dataManipulator.writeRecords(); 
    dataManipulator.closeFiles(); 
} 
    String oneCity = "British Columbia:Vancouver:49° 17' N:123° 8' W"; 
     String twoCity = "Ontario:Hamilton:43° 15' N:79° 52' W"; 
     String[] source; 
     String[] rawLatitude; 
     String[] rawLongitude; 
     int sourceLatDegrees; 
     int sourceLatMinutes; 

     if(twoCity.matches("Ontario:Hamilton.*")){ 
       source = twoCity.split(":"); 
       for(String inspect: source){ 
         System.out.printf("%s\n", inspect); 
       } 
       rawLatitude = source[2].split("\\D+"); 
       for(String inspect: rawLatitude){ 
        System.out.printf("%s\n", inspect); 
       } 
       sourceLatDegrees = Integer.parseInt(rawLatitude[0]); 
       sourceLatMinutes = Integer.parseInt(rawLatitude[1]); 
       System.out.printf("source lat degrees %d source lat minutes %d\n", 
         sourceLatDegrees, sourceLatMinutes); 
     } 

     double earthRadius = 6371; // in km 
     double distance = Math.acos(Math.sin(Lat1) * Math.sin(Lat2) + 
       Math.cos(Lat1) * Math.cos(Lat2) * 
       Math.cos(Long2 - Long1)) * earthRadius; 

     public static double rad2deg(double rad) { 

    return (rad * 180.0/Math.PI); 

} 

} 

Ich brauche einen Ausgang zu zeigen, dass der Benutzer für zwei Stadt und Provinz Namen veranlassen wird. Es wird eine Nachricht auf dem Bildschirm ausgegeben, die die Entfernung zwischen den beiden Städten in km angibt. Wenn eine der Städte nicht in der Datei gefunden wird, wird eine Fehlermeldung auf dem Bildschirm angezeigt, die besagt, welche Stadt nicht gefunden wurde. Wenn der Benutzer zweimal denselben Namen für Stadt und Provinz eingibt, sollte Ihr Programm etwas Höfliches und Sinnvolles tun. Kann jemand mir helfen, den Teil dieses Codes zu drucken? Vielen Dank.

Antwort

0

Von https://www.geodatasource.com/developers/java

class DistanceCalculator 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "M") + " Miles\n"); 
     System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "K") + " Kilometers\n"); 
     System.out.println(distance(32.9697, -96.80322, 29.46786, -98.53506, "N") + " Nautical Miles\n"); 
    } 

    private static double distance(double lat1, double lon1, double lat2, double lon2, String unit) { 
     double theta = lon1 - lon2; 
     double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); 
     dist = Math.acos(dist); 
     dist = rad2deg(dist); 
     dist = dist * 60 * 1.1515; 
     if (unit == "K") { 
      dist = dist * 1.609344; 
     } else if (unit == "N") { 
      dist = dist * 0.8684; 
     } 

     return (dist); 
    } 


    private static double deg2rad(double deg) { 
     return (deg * Math.PI/180.0); 
    } 


    private static double rad2deg(double rad) { 
     return (rad * 180/Math.PI); 
    } 
} 
Verwandte Themen