арифметическая задача - PullRequest
1 голос
/ 21 ноября 2010

Я написал этот код, но он не вычисляет ((((bY - aY) / (maxX - minX)) * (p.getX() - minX)) + aY) для меня. Пожалуйста, помогите мне.

часть кода: (У меня есть четыре точки, которые aY означают "y" точки "a ")

        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)

1 Ответ

3 голосов
/ 21 ноября 2010

Было бы более полезно, если бы вы объяснили, какой результат вы получаете и что вам не нравится в этом.«не может вычислить результат» подразумевает, что вы получаете какое-то исключение, но я не думаю, что это то, что вы имеете в виду.

Что вы, вероятно, имеете в виду, так это то, что полученный вами результат не соответствует вашим ожиданиям, и наиболее вероятной причиной этого является то, что все ваши переменные int, поэтому он выполняет целочисленную арифметику, но вы, вероятно, хотите получить результаты с плавающей точкой из ваших делений.

Я предлагаю изменить ваши локальные переменныев float или double, поэтому перед выполнением арифметики целые числа будут автоматически преобразованы.

Кроме того, похоже, что у вас есть два сложных арифметических выражения несколько раз.Я рассчитал бы их один раз и назначил бы их локальным переменным (в цикле, перед if).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...