¿Cómo puedo conectar objetos entre sí dentro de una instrucción principal?

Clueless AP Maestro:

Enseño AP CSA (primer año) y han decidido dar a mis hijos una (al menos para mí) la asignación desafiante. Se supone que el uso producen una sentencia de impresión que le dirá cuánto tiempo se necesita un villano que recorrer una distancia específica. Me gustaría tener una solución antes de dar a ellos.

La sentencia print fue fácil para mí, y el programa funciona "como se pretende" - no puedo evitar pensar lo hice demasiado complicado y perdió la oportunidad de un poco abstracta en lugar de codificar duro mi longitud y latitud. ¿Había una mejor manera para mí para conectar el inicio de geolocalización y objetos finales de geolocalización a mis ciudades? Véase más abajo para mi código.

    GeoLocation start = new GeoLocation(37.765469, 100.015167);
    GeoLocation end = new GeoLocation(37.275280, 107.880066);
    double distance = start.distanceFrom(end);
    double travelTime = distance/15;
    int travelReport = (int)travelTime;


    WesternTown sweatyPost = new WesternTown();
    sweatyPost.saloons = 2;
    sweatyPost.sheriffs = 1;
    sweatyPost.troublemakers = 5;

    WesternTown dodgeCity = new WesternTown();
    dodgeCity.saloons = 7;
    dodgeCity.sheriffs = 2;
    dodgeCity.troublemakers = 29;
    dodgeCity.longitude = 100.015167;
    dodgeCity.latitude = 37.765469;

    WesternTown durango = new WesternTown();
    durango.saloons = 4;
    durango.sheriffs = 0;
    durango.troublemakers = 6;
    durango.longitude = 107.880066;
    durango.latitude = 37.275280;
Azro:

Se puede ver el GeoLocationcomo una propiedad de un WesternTownmodo que sea un atributo coulé:

public class WesternTown{
    private int saloons;
    private int sheriffs;
    private int troublemakers;
    private GeoLocation location;

    // appropriate constructor with all :
    public WesternTown(int saloons, int sheriffs, int troublemakers, Geolocation location){
        this.saloons = saloons;
        ...
    }
}

Y tendrá

WesternTown dodgeCity = new WesternTown(7, 2, 29, new GeoLocation(37.765469, 100.015167));
WesternTown durango = new WesternTown(4, 0, 6, new GeoLocation(37.275280, 107.880066));

// 1. Leave method in GeoLocation class
double distance = dodgeCity.getLocation().distanceFrom(durango.getLocation());
// 2. or move it into WesternTown
double distance = dodgeCity.distanceFrom(durango);

  1. Dejar método en la clase de GeoLocation

    double distanceFrom(Geolocation other){
        return Math.sqrt(Math.pow(this.x - other.x, 2) + Math.pow(this.y - other.y, 2));
    }
    
  2. o moverlo a WesternTown

    // move all the method
    double distanceFrom(WesternTown other){
        return Math.sqrt(Math.pow(this.location.getX() - other.location.getX(), 2) + 
                         Math.pow(this.location.getY() - other.location.getY(), 2));
    }
    
    // or just call the Geolocation method
    double distanceFrom(WesternTown other){
        return this.location.distanceFrom(other.location);
    }
    

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=237207&siteId=1
Recomendado
Clasificación