0

そのため、Location クラスと radio クラスがあります (radio クラスには座標が含まれています)。基本的に、私が書いているプログラムでは、無線クラスから座標を取得し、2 セットの座標に距離式を使用する場所が必要です。位置:

public class Location {


private double lat, lon;


public Location (double lat, double lon){
this.lat=lat;
this.lon=lon;
}

public Location (){
this.lat=0.0;
this.lon=0.0;
}

public void setLat(double lat){
this.lat=lat;
}

public void setLon(double lon){
this.lon=lon;
}

public double Distance (double lat1, double lon1, double lat2, double lon2) {

lat1 = Math.toRadians(lat1);
lon1 = Math.toRadians(lon1);
lat2 = Math.toRadians(lat2);
lon2 = Math.toRadians(lon2);

double cosLat2 = Math.cos(lat2);
double sinLonChange = Math.sin(lon2-lon1);
double cosLat1 = Math.cos(lat1);
double sinLat2 = Math.sin(lat2);
double sinLat1 = Math.sin(lat1);
double cosLonChange = Math.cos(lon2-lon1);

double a = Math.pow((cosLat2*sinLonChange), 2);
double b = Math.pow(((cosLat1*sinLat2)-(sinLat1*cosLat2*cosLonChange)), 2);
double c = (sinLat1*sinLat2)+(cosLat1*cosLat2*cosLonChange);

double spherDistance = Math.atan(Math.sqrt(a+b)/c);

double Distance = 3959 * spherDistance;

return Distance;

}


public double getLat(){
return lat;
}

public double getLon(){
return lon;
}
public double getDistance(){
return Distance;
}

public String toString(){
String dist="lat"+lat+"lon"+lon;
return dist;
}

}

とラジオ:

public class Radio {
public static void main(String[] args) {
Location loc1=new Location(10,20);
Location loc2=new Location(30,40);

System.out.println(loc1.toString());    
System.out.println(loc2.toString());    

}


}

また、主な方法がラジオにある唯一の理由は、すべてが機能するかどうかを単にテストしているためであることにも言及する必要があります。どうもありがとうございました!

4

2 に答える 2

1

上記のウォードの提案を外挿すると、次のようなことをお勧めします。

ロケーション クラス:

public class Location {
  // private data

  // constructor

  public double distance(Location otherLoc) {
    // Use distance formula here
  }
}

ラジオクラス:

public class Radio {
  private Location loc;

  public double distance(Radio otherRadio) {
    return loc.distance(otherRadio.loc);
  }
}

これですべての質問に回答できない場合は、上記の投稿を編集するか、詳細を追加して新しい投稿を投稿してください。

于 2012-08-02T22:51:23.530 に答える
0

私があなたの心を正しく読むことができれば、aは、Radioを持っているはずLocationです、そしてあなたは2つのラジオの間の距離を見つけたいです。Locationその場合、各無線には、次のように、の独自のインスタンスが含まれている必要があります。

public class Radio {
    public Location loc;
}

次に、2つの無線機間の距離を知りたい場合は、関数を使用して作成できますが、4つのdoubleの代わりに引数としてDistance渡します。Locationのインスタンスを作成せずに、自分で呼び出すことができるようにに(Radio r1, Radio r2)変更public double Distanceします。static public double Distance次に、距離関数内で、各無線の位置値を取得し、計算を実行して、結果を返すことができます。

于 2012-08-02T22:17:33.573 に答える