2013-04-16 3 views
0

Мне нужно найти среднюю сумму площадей каждого прямоугольника. Я могу найти область каждого прямоугольника, должен ли я хранить каждую область в массиве и найти среднее значение через это? или это невозможно?Среднее значение области прямоугольника

ArrayList<Rectangle> list = new ArrayList<Rectangle>(); 
    list.add(new Rectangle(0, 0, 25, 50)); 
    list.add(new Rectangle(0, 0, 10, 30)); 
    list.add(new Rectangle(0, 0, 100, 40)); 
    list.add(new Rectangle(0, 0, 40, 45)); 
    list.add(new Rectangle(0, 0, 13, 13)); 

    double aAvg = 0.0; 
    for (int i = 0; i < list.size(); i++) { 
     double h = list.get(i).getHeight(); 
     double w = list.get(i).getWidth(); 
     double area = h * w; 
     System.out.println(area); 
    } 
+0

не могу поверить, что это overthought ... – qvd

ответ

1

В принципе, вам просто нужно подвести каждую область вместе

double sum = 0.0; 
for (int i = 0; i < list.size(); i++) { 
    double h = list.get(i).getHeight(); 
    double w = list.get(i).getWidth(); 
    double area = h * w; 
    sum += area; 
} 

Затем вычислить среднее значение на основе от этого значения ...

double aAvg = sum/(double)list.size(); 

Если вам нужен список областей , не должно быть необходимости поддерживать ДРУГОЙ список. Намного проще (и безопаснее) рассчитать его по мере необходимости (в этом случае) ...

+0

ой ... -_____- простите меня, пока я иду застрелиться ... – qvd

+0

Добро пожаловать в лес, вы не увидите много для деревьев;) – MadProgrammer

0

Попробуйте это.

ArrayList<Rectangle> list = new ArrayList<Rectangle>(); 
    list.add(new Rectangle(0, 0, 25, 50)); 
    list.add(new Rectangle(0, 0, 10, 30)); 
    list.add(new Rectangle(0, 0, 100, 40)); 
    list.add(new Rectangle(0, 0, 40, 45)); 
    list.add(new Rectangle(0, 0, 13, 13)); 

    double aAvg = 0.0; 
    double totalArea = 0.0; 
    for (int i = 0; i < list.size(); i++) { 
     double h = list.get(i).getHeight(); 
     double w = list.get(i).getWidth(); 
     double area = h * w; 
     totalArea += area; 
     System.out.println(area); 
    } 
    aAvg = totalArea/list.size(); 

    System.out.println("Average area : " + aAvg); 
Смежные вопросы