2011-10-03 2 views
0

im пытается реализовать метод getBounds(), но я не могу заставить профсоюз работать; я не понимаю, как работает профсоюз. мой код выглядит следующим образом:Почему не работает Rectangle2D.createUnion() для меня?

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

переменная формы является архаристом фигур.

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

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

ответ

3

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

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

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

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); 
    } 
} 
Смежные вопросы