方法-求数组中所有几何对象的面积之和

问题描述

求数组中所有几何对象的面积之和

方法签名如下:
public static double sumArea(GeometricObject[] a)编写测试程序,创建三个对象
(一个圆,一个三角形,一个矩形)的数组。并使用sumArea方法求它们的总面积。

解决方案


        GeometricObject[] gobj = new GeometricObject[3];
        gobj[0] = new Triangle(new Point(1.0, 2.0), new Point(1.0, 1.0),
                new Point(0.0, 2.0));
        gobj[1] = new Circle(new Point(1.0, 2.0), 3);
        gobj[2] = new Rectangle(new Point(1.0, 2.0), new Point(1.0, 5.0),
                new Point(1.0, 0.0), new Point(5.0, 0.0));
        double sumArea = 0;
        for (int i = 0; i < gobj.length; i++) {
            if (gobj[i] != null) {
                double area = gobj[i].getArea();
                System.out.println(gobj[i].toString() + "其面积为:" + area);
                sumArea += area;
            }
        }
        System.out.println("总面积为:" + sumArea);

输出结果为:

 三角形的三个顶点为:点(1.0,2.0);点(1.0,1.0);点(0.0,2.0);其面积为:0.5
圆形的中心为:点(1.0,2.0);半径为:3.0其面积为:28.27
矩形的四个顶点为:点(1.0,2.0);点(1.0,5.0);点(1.0,0.0);点(5.0,0.0);其面积为:6.0
总面积为:34.769999999999996

解决方案二:

GeometricObject作为基类,那三种形状作为子类,基类公布计算面积的接口,子类实现具体计算,剩下的就是遍历,调用接口,汇总

解决方案三:

你这个GeometricObject是自己定义的吧?

解决方案四:

做个for循环,加一下

时间: 2024-10-03 09:59:39

方法-求数组中所有几何对象的面积之和的相关文章

深入线性时间复杂度求数组中第K大数的方法详解_C 语言

求数组中第K大的数可以基于快排序思想,步骤如下:1.随机选择一个支点2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分)3.设左部分的长度为L,当K < L时,递归地在左部分找第K大的数当K > L时,递归地在有部分中找第(K - L)大的数当K = L时,返回左右两部分的分割点(即原来的支点),就是要求的第K大的数以上思想的代码实现如下: 复制代码 代码如下: /**线性时间复杂度求数组中第K大数** author :liuzhiwei ** data 

任意元素和-求一个数组中选出任意个数元素相加之和,求大神指教

问题描述 求一个数组中选出任意个数元素相加之和,求大神指教 求一个数组中选出任意个数元素相加之和,求大神指教 比如打印出arry[8]中,任意两个数相加的和,任意三个数相加的和,直到任意八个数相加的和. 求大神指教. 解决方案 不知道你用的什么语言 如果C#,参考我写的http://bbs.csdn.net/topics/390550326 这个问题其实就是求M选N,其中M=8,N循环1-8 然后得到每个组合再求和. 解决方案二: 不知道你使用的是什么语言,不过思路是这样的,你的要求是不是随机数

ios-在数组中添加字符串对象

问题描述 在数组中添加字符串对象 在给NSMutableArray添加元素的时候,在第四行出现错误: -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x897b320 代码: NSMutableArray *mystr = [[NSMutableArray alloc] init]; mystr = [NSArray arrayWithObjects:@"hello",@"world"

求数组中最长递增子序列的解决方法_C 语言

存储扩展算法n2编程c 写一个时间复杂度尽可能低的程序,求一个一维数组(N个元素)中的最长递增子序列的长度.例如:在序列1,-1,2,-3,4,-5,6,-7中,其最长的递增子序列为1,2,4,6 或者 -1,2,4,6.(编程之美P198-202)分析与解法根据题目的要求,求一维数组中的最长递增子序列,也就是找一个标号的序列b[0],b[1],-,b[m](0 <= b[0] < b[1] < - < b[m] < N),使得array[b[0]]<array[b[1

Java求数组中连续n个元素使其和最大

给定一个数组,求出数组中连续的一些元素使其和的值最大.如果所有元素都为正数,显然整个数组即为所求的.如果所有元素的值为负数,则所求的最大值为0. 这是在编程珠玑上看到的,其时间复杂度由O(n3)减为O(n)了. java代码 package cn.lifx.test; public class MaxSum { public static void main(String[] args) { int[] arr = new int[]{31, -41, 59, 26, -53, 58, 97,

javascript的原生方法获取数组中的最大(最小)值_基础知识

获取一个数组中的最大(最小)值的最简单的方法,就是对数组进行一次遍历,通过比较,找到其最大(最小)值.但是其实在javascript的原生方法中,已经提供了一些快捷方法,可以实现此功能. 1 Array.prototype.sort 复制代码 代码如下: var a = [7,3,4,6,10]; a.sort(function(a,b){ return (a-b);}) 注意,sort里的比较函数是一定要传入的,如果不传此函数的话,a.sort()的结果是[10,3,4,6,7]; 2 Mat

求数组中只出现一次的数字的算法

题目: 一个整型数组里除了两个数字以外, 其他的数字都出现了两次. 请写程序找出这两个只出现一次的数字. 如果从头到尾依次异或数组中的每一个数字, 那么最终的结果刚好是那个只出现一次的数字. 根据结果数组二进制某一位为1, 以此分组, 为1的一组, 为0的一组, 再重新进行异或. 最后得出两个结果. 时间复杂度O(n). 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*

对“求数组中所有和为某固定数的所有数对”的算法的简单思考

一.题目描述 有一个数组a[1000],里面存放了1000个整数,请找出该数组中所有和为M的数对.例如数组为- 1,2,4,6,5,3,4,2,9,0,8,3,那么和为8的数对有(-1,9),(2,6),(4,4),(5,3),(5,3),(0,8). 二.最普通的算法 在不可率复杂度的情况下,对于这个问题的最简单的算法如下: private static List<int[]> UseNormalWay(int[] arr, int sumTotal) { List<int[]>

求数组中第二最大数

#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 // 找出数组中第二个最大的数 int findSecMax(int arr[], int n) { const int MINNUMBER = -32767; int sec_max, max; sec_max = MINNUMBER; max = arr[0]; for (int i = 1; i < n; i++) {