2012-03-26 20 views
1

ここでは何が起こっているのか分かりませんが、ここでは問題があります(他にもいくつかありますが、ここで私が他の場所にそれを適用することができるロジックを理解する)。 私は最近、ポイントを使用していたが、小数点を得ることができなかったので、as suggestedの問題を抱えていました。ダブルにするためにpoint2Dに切り替えました。私は原因を見ていないので、私はエラーを取得しているので、修正方法を理解できないように思えます(私はpoint2Dに変更するとそれを引き起こしましたが、接続が見えません)。引数型double、Point2D.Doubleの演算子*は未定義です

Double x_data = (Double) data.get(k); 
for (int c = 0; c <= 100; c++) { //the c variable caps the percent 
    double percent = roundTwoDecimals(c*.01); 
    double value1 =(sum - percent * x_data); 

データは、私が倍増するとし、その合計が本当に整数私はこの方法に送る変数であることをキャスティングしていたPoint2D(しかし、私のリストです:

私は、次のコードを持っています私はグーグルで、このエラーはしばしば文字列や何かを乗ろうとしている誰かによって引き起こされているのを見ましたが、これらのすべてが倍になることは確かです。今すぐ次のエラーを取得してください:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The operator * is undefined for the argument type(s) double, Point2D.Double 
    The operator * is undefined for the argument type(s) double, Point2D.Double 
    Syntax error, insert ")" to complete ArgumentList 
    The operator * is undefined for the argument type(s) double, Point2D.Double 

このプロセスに関わる問題は、倍精度化または倍精度化されているので、なぜPoint2Dがこれらの演算子に関係するのかわかりません。

はまた、私は小数点以下の桁限ら方法だった:

static double roundTwoDecimals(double d) { 
     DecimalFormat twoDForm = new DecimalFormat("#.###"); 
     return Double.valueOf(twoDForm.format(d)); 

が、私はその上のエラー(Point2Dのエラーを)持っては、Double.valueOfはもう選択肢の一つではありませんが(私は、それを回避するために小数点以下を制限せずに今すぐ戻ってください)。

助けてください。私はpoint2Dまたは何かに問題があるとは思わないが、構造的に何か間違っていなければならない。

おかげで

+0

例外的に、 'double'型の変数に' * '演算子を使って' Point2D.Double'型を乗算しようとしています。 Java VMは、それを行う方法がわからないことを伝えています。たぶん、ネイティブタイプ 'double'のオブジェクトバージョンである' Double'をオーバーライドする 'Point2D.Double'をインポートしたでしょうか? – len

答えて

3

スタックトレースによると、x_dataはタイプPoint2D.Double、ないjava.lang.Doubleです。 インポートを確認し、を削除し、java.lang.Doubleを追加してください。

Point2DDoubleにキャストすることはできません。おそらくyourDoublePoint2D.getX() adn yourDoublePoint2D.getY()を返し、double秒(キャスト不要)を返すことを意味します。あなたはおそらくこれでPoint2D.Doubleクラスをインポートしている

Double d1 = 1.5; 
double d2 = 2.3; 
double d3 = d1 * d2; 

EDIT:

import java.awt.geom.Point2D.*; 

または

import java.awt.geom.Point2D.Double; 
側の注意点として

、あなたはこのような何かを書くことができます

これはjava.lang.Doubleとの名前の衝突を作成します。あなたが期待どおりに動作するコードの例を以下に示します。

import java.awt.geom.Point2D; //Note: only import Point2D, not Point2D.Double 

public class Test { 

    public static void main(String[] args) { 
     Point2D.Double point = new Point2D.Double(1.5, 2.5); 
     double x = point.getX(); //1.5 
     double y = point.getY(); //2.5 
     Double xx = point.getX(); //1.5 
     Double yy = point.getY(); //2.5 
    } 
} 
+0

私はあなたの言っていることを取得し、それは意味をなさないが、私は両方を使用する必要があります。私はPoint2D.Doubleと(この場合は)java.lang.Doubleが必要です。私は*私がpoint2D.Doubleをインポートしたときに、それが他のすべての倍をその中に変換したと思います。あるセットの変数には特定の倍精度を使用し、別のセットには別の倍精度を使用する方法はありますか? –

+0

はい、 'Double'ではなく' java.lang.Double'のようなフルネームで指定してください。これはPoint2D.Double btwでも有効です。 – len

+0

@len知っておきたいことはありがとうございます。私はテストを開始しますが、もう一方をデフォルトにする方法はありますか?私のコードはかなり大きく、私がjava.lang.Doubleに持っている多くのリファレンスを変更するのではなく、それらをそのまま保ち、必要なときにPoint2D.Doubleを呼び出すだけです。 –

0

Point2Dをインポートしないと、ダブル、しかし、完全なパッケージ名でそれのすべてのインスタンスを参照して、 "unadorned"ダブルはjava.lang.Doubleする必要があります。

関連する問題