2010-11-21 3 views
1

Ich habe diesen Code geschrieben, aber es ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY) nicht berechnet für me.please mir helfen.Rechenaufgabe

ein Teil des Codes: meine spezifischen Arithmetik (I haben vier Punkte, die aY die „y“ der Punkt „a“ bedeutet)

 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); 

      } 



     } 

der Ausgang eine ganze Zahl sein, die der völlig "y" of point "a". ist Anweisung funktioniert nicht.bitte helfen Sie mir warum? Ich habe auch jeden Wert in der arithmetischen Anweisung überprüft und sie sind in Ordnung, aber kann das Ergebnis für mich nicht berechnen. spezifische arithmetische Anweisung: ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY)

Antwort

3

Es wäre hilfreich, wenn Sie erklärt, was zur Folge haben Sie bekommen und was Sie nicht mögen darüber. "Kann das Ergebnis nicht berechnen" bedeutet, dass Sie eine Ausnahme von irgendeiner Art erhalten, aber ich denke nicht, dass Sie das meinen.

Was Sie wahrscheinlich meinen, ist, dass das Ergebnis ist nicht, was Sie erwarten, und der wahrscheinlichste Grund dafür ist, dass alle Ihre Variablen sind int, so dass es Ganzzahlarithmetik tut, aber Sie möchten wahrscheinlich Floating- Zeigen Sie Ergebnisse aus Ihren Divisionen.

Ich schlage vor, dass Sie Ihre lokalen Variablen in float oder double ändern, damit die Ints automatisch vor der Arithmetik konvertiert werden.

Auch sieht es aus wie Sie zwei komplexe arithmetische Ausdrücke dort mehrere Male haben. Ich würde sie einmal berechnen und sie lokalen Variablen (innerhalb der Schleife, vor dem if) zuweisen.

+0

„... und der wahrscheinlichste Grund dafür ist, dass alle Variablen int sind, so dass es Integer-Arithmetik tut, aber Sie wollen wahrscheinlich Gleitkommazahlen Ergebnisse Ihrer Divisionen zu bekommen ...“ - genau so. +1 – duffymo

+0

auch ich habe alle int zu verdoppeln aber immer noch funktioniert es nicht !!!! – user472221

+0

+1. Ein noch besserer Grund (als Effizienz) für die Extraktion lokaler Variablen ist die Klarheit. Es ist sehr schwer zu sehen, was du versuchst zu tun; Die Berechnung von Termen wie deltaX und xRange würde beginnen, dies zu klären. –