1

私はJavaの初心者で、インターネットから練習問題をやっています.この質問に出くわして行き詰まりました.

4 つの整数座標 x1、y1、x2、および y2 をパラメーターとして受け取り、デカルト平面上の点 (x1、y1) と (x2、y2) の間の距離を計算する distance というメソッドを作成します。たとえば、distance(1, 0, 4, 4) を呼び出すと 5.0 が返され、distance(10, 2, 3, 5) を呼び出すと 7.615773105863909 が返されます。

public static int distance(int x1,int y1,int x2,int y2){
   int d=(x2-x1)*(x2-x1)-(y2-y1)*(y2-y1))^0.5;
    return (double)d;

}

明確にしたい2つのこと.^を使用すると、適用できないというエラーが表示され続ける.

4

5 に答える 5

3

^はバイナリXOR演算子です。

代わりにMath.powを使用してください。またはMath.sqrt(より良い)。

int結果をにキャストしてからに戻すべきではありませんdouble。使用するだけ

public static double distance(int x1,int y1,int x2,int y2){
    return Math.sqrt((x2-x1)*(x2-x1)-(y2-y1)*(y2-y1)));
}
于 2013-03-09T15:48:05.777 に答える
1
int d=(x2-x1)*(x2-x1)-(y2-y1)*(y2-y1))^0.5;

Javaでは、^はXOR演算子です。を使用しMath.pow()ます。

半分の累乗は、スクエアルーティングでも同じです。これは、で実行できますMath.sqrt()

于 2013-03-09T15:48:10.633 に答える
0
  1. 電源を入れたい場合は、^演算子の代わりにMath.pow()を使用してください。またはMath.sqrt()
  2. メソッドがintを返すため、doubleをキャストすることはできません。publicstaticdoubleに変更します
于 2013-03-09T15:48:00.770 に答える
0

あなたは使うことができますMath.sqrt()、それはJava数学の組み込みメソッドです。

于 2013-03-09T15:48:39.567 に答える
0

まず、フィクションが int 値を期待している場合、 double を返すことはできません。次に、Math.pow()の代わりに使用できます。^この場合は、 を使用できますMath.Sqrt()。3 番目に double の結果が必要な場合は、使用している int 値を double にキャストする必要があります。

public static double distance(int x1,int y1,int x2,int y2){

    double d = Math.sqrt(((x2-x1)*(x2-x1)-(y2-y1)*(y2-y1)));
    return d;
}
于 2013-03-09T15:55:17.653 に答える