Почему Rectangle2D.createUnion () не работает для меня? - PullRequest
0 голосов
/ 03 октября 2011

я пытаюсь реализовать метод getBounds (), но я не могу заставить union работать; я не должен понимать, как работает союз. мой код следующий:

public Rectangle2D getBounds2D() {
    Rectangle2D rec= new Rectangle2D.Double();
    Rectangle2D temp;
    for(int i=0; i<shapes.size(); i++){
        temp = new Rectangle2D.Double(shapes.get(i).getBounds2D().getX(),shapes.get(i).getBounds2D().getY(),shapes.get(i).getBounds2D().getWidth(), shapes.get(i).getBounds2D().getHeight());
        rec.createUnion(temp);

    }
    return rec;
}

переменная фигур - это массив форм.

я использую temp для создания прямоугольника, используя границы каждой фигуры в массиве

Я использовал getbounds (). GetWidth / Height для temp, чтобы увидеть, возвращаются ли странные числа, но числа выглядят нормально. Когда я вызываю rec.getBounds.getWidth / Height, я получаю 0.0 для обоих. Исходя из этого, я предполагаю, что я не использую union () правильно. у кого-нибудь есть понимание того, что я могу? спасибо!

1 Ответ

3 голосов
/ 03 октября 2011

Если вы не уверены, как использовать метод, то почему ваш код так сложен для тестирования метода?Почему вы просматриваете и массив?Как вы будете проверять результаты?

Начните с чего-то простого.Попробуйте использовать метод только с двумя прямоугольниками и с жестко закодированными значениями для каждого прямоугольника.Тогда вы можете легко проверить результаты.Если это не работает, значит, у вас есть полная программа для публикации.

Что-то вроде:

public class Test
{
    public static void main(String args[]) throws Exception
    {
        Rectangle a = new Rectangle(5, 5, 30, 30);
        Rectangle b = new Rectangle(10, 10, 50, 50);
        a = a.union(b);
        System.out.println(a);
        System.out.println(b);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...