Я написал этот код, но он не вычисляет ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY)
для меня. Пожалуйста, помогите мне.арифметическая проблема
часть коды: (У меня есть четыре точки, которые аУ означает «у» из точки «А»)
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".
полностью, моей конкретной арифметика оператор не работает.пожалуйста, помогите мне почему? Также я проверил каждое значение в арифметическом выражении, и они в порядке, но не могут вычислить результат для меня. специфический арифметический оператор: ((((bY - aY)/(maxX - minX)) * (p.getX() - minX)) + aY)
«... и наиболее вероятная причина этого в том, что все ваши переменные являются int, поэтому он выполняет целочисленную арифметику, но вы, вероятно, хотите получить результаты с плавающей запятой из ваших разделов ...» - именно так. +1 – duffymo
также у меня есть все, что нужно, чтобы удвоить, но все равно это не работает !!!! – user472221
+1. Еще лучшая причина (чем эффективность) для извлечения локальных переменных - ясность. Очень сложно понять, что вы пытаетесь сделать; вычисление таких терминов, как deltaX и xRange, начнет разъяснять его. –