2010-11-21 15 views
1

私はこのコードを書いていますが、me.pleaseには((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY)が計算されません。算術問題

コードの一部:(私は。Yは点「A」の「Y」を意味四点を有する)

 int aY = minXY[0]; 
     int bY = maxXY[0]; 
     int cY = minXY[minXY.length - 1]; 
     int dY = maxXY[maxXY.length - 1]; 

    for (Point p : pointList) { 
      if ((p.getY() > ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY)) && (p.getY() < ((((dY - cY)/(maxX - minX)) * (p.getX() - minX)) + cY))) { 

       list.add(p); 

      } else if (p.getY() < ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY)) { 
       upperHull.add(p); 
       int m = ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY); 
       System.out.println(m); 


      } else if (p.getY() > ((((dY - cY)/(maxX - minX)) * (p.getX() - minX)) + cY)) { 
       lowerHull.add(p); 

      } 



     } 

出力は私の特定の演算、完全"y" of point "a". 整数であろう文は動作しません。なぜ私は算術文の各値をチェックしてもOKですが、結果は計算できません。 特定の算術演算ステートメント:

答えて

3

あなたが得た結果とそれについて気に入らないものについて説明した場合は、より役に立ちます。 "結果を計算することはできません"とは、何らかの例外を受けていることを意味しますが、それはあなたが意味するものではないと思います。

おそらく、結果は期待したものではなく、これはおそらくすべての変数がintなので整数演算をしている可能性が高いですが、あなたの部門からのポイント結果。

ローカル変数をfloatまたはdoubleに変更することをお勧めします。そのため、算術演算を行う前にintが自動的に変換されます。

また、そこに複数の複雑な算術式が複数あるようです。私はそれらを一度計算し、それらを局所変数に代入します(ループ内で、ifの前に)。

+0

"これは、すべての変数が整数であるため、整数演算を行っているが、浮動小数点の結果を得たいと思う可能性が高い。 +1 – duffymo

+0

私は二重にすべてのintを変更しましたが、それでも動作しません! – user472221

+0

+1。局所変数を抽出するためのより良い理由(効率よりも)は明快です。あなたがしようとしていることを見るのはとても難しいです。 deltaXやxRangeのような用語を計算すると、それを明確にし始めます。 –