eclipse使用Java通过周长,求一组图形中的最大面积程序
前言
已知图形的周长c,通过周长,求一组图形中的最大面积:
-
方形:0.0625cc
-
圆形:0.0796cc
-
六边形:0.0721cc
方案
抽取父类,构造抽象类
abstract class Shape{ //抽象类
protected double c; //周长
public abstract double area(); //抽象方法
}
代码实现
具体代码如下:
package oo.day05;
//找一组图形中的最大面积
public class ShapeTest {
public static void main(String[] args) {
//new Shape(); //编译错误,抽象类不能被实例化
Shape[] shapes = new Shape[6]; //创建Shape数组对象
shapes[0] = new Square(1); //方形面积
shapes[1] = new Square(2);
shapes[2] = new Circle(1); //圆形面积
shapes[3] = new Circle(2);
shapes[4] = new Circle(1); //六边形面积
shapes[5] = new Circle(2);
maxArea(shapes); //调取方法
}
//找最大面积方法
public static void maxArea(Shape[] shapes) {
double max = shapes[0].area(); //假设第一个面积最大
int maxIndex = 0; //假设最大下标为第一个
for(int i=0;i<shapes.length;i++) { //遍历剩余面积
double area = shapes[i].area(); //取每个对象元素的面积,赋给area
if(area>max) { //每个元素和最大面积max比
max = area; //面积大,将area的值给max
maxIndex = i; //将最大面积值的下标赋给maxIndex
}
}
System.out.println("最大面积为:"+max+",最大下标为:"+maxIndex);
}
}
abstract class Shape{ //抽象类
protected double c; //周长
public abstract double area(); //抽象方法
}
class Square extends Shape{ //方形
public Square(double c){ //构造方法,初始化赋值
this.c = c;
}
public double area() { //重写抽象方法
return 0.0625*c*c;
}
}
class Circle extends Shape{ //圆形
public Circle(double c) { //构造方法,初始化赋值
this.c = c;
}
public double area() { //重写方法
return 0.0796*c*c;
}
}
class Six extends Shape{
public Six(double c) { //构造方法,初始化赋值
this.c = c;
}
public double area() { //重写方法
return 0.0721*c*c;
}
}