用Java求圆、长方形、正方形的面积及周长,并比较打印各个图形的大小

代码分两部分来现实:

  1. 先求出各个图形的面积和周长;
  2. 在比较各个图形的大小;

第一点解答如下:

(创建一个图形类Graph;派生类:圆形类Circle、正方形类Square、长方形类Rectangle;测试类TestGraph)

代码如下:

//创建图形类Graph
public abstract class Graph implements Comparable {
/*
 * 定义area、girth抽象方法求面积和周长;子类要抽象这两个方法,(当子类也是抽象类时可不抽象父类的抽象方法)
 */
	public abstract double area();
	public abstract double girth();
	public int comparaTo(Graph graph){
		if(this.area()>graph.area()){
			return 1 ;
		}else if(this.area()<graph.area()){
			return -1 ;
		}else{
			return 0 ;
		}
	}

}
//创建圆形类Cricle
public class Cricle extends Graph {

	private double radius;   //声明圆半径
	private String green;     //声明圆颜色
	private String HavePadding;     //声明圆填充
	
	public Cricle(double radius) {
		this.radius = radius;
	}
	
	public Cricle(double radius,String green,String HavePadding) {
		this.radius = radius;
		this.green = green;
		this.HavePadding = HavePadding;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}
       //重写父类Graph抽象类中的area()方法
	public double area() {
		
		return Math.PI * radius * radius;
	}
	//重写父类Graph抽象类中的girth()方法
	public double girth() {
		
		return 2 * Math.PI * radius;
	}

	public String toString() {
		return " 颜色 = " + green + ", 是否填充 = " + HavePadding + "";
	}

	public int comparable(Graph graph) {
		// TODO Auto-generated method stub
		return 0;
	}

}
//创建正方形类Square
public  class Square extends Graph {
	
	private double side;   //声明正方形边长
	private String yellow;     //声明正方形颜色
	private String NotPadding;     //声明正方形填充
	
	public Square(double side) {
		 this.side = side;
	}
	
	public Square(double side,String yellow,String NotPadding) {
		this.side = side;
		this.yellow = yellow;
		this.NotPadding = NotPadding;
	}


	public double getSide() {
		return side;
	}


	public void setSide(double side) {
		this.side = side;
	}

	//重写父类Graph抽象类中的area()方法
	public double area() {
		
		return side * side;
	}

	//重写父类Graph抽象类中的girth()方法
	public double girth() {
		
		return 4 * side;
	}

	@Override
	public String toString() {
		return " 颜色 = " + yellow + ", 是否填充 = " + NotPadding + "";
	}

	public int comparable(Graph graph) {
		// TODO Auto-generated method stub
		return 0;
	}
}
//创建长方形类Rectangle
public class Rectangle extends Graph {
	private double length;   //声明长方形长和宽
	private double width;
	private String red;     //声明长方形颜色
	private String HavePadding;     //声明长方形填充
	
	
	public Rectangle(double length, double width) {
	     this.length=length;
	     this.width=width;
	}

	public Rectangle(double length,double width,String red,String HavePadding) {
		this.length = length;
		this.width = width;
		this.red = red;
		this.HavePadding = HavePadding;
	}

	public double getLength() {
		return length;
	}


	public void setLength(double length) {
		this.length = length;
	}


	public double getWidth() {
		return width;
	}


	public void setWidth(double width) {
		this.width = width;
	}

	//重写父类Graph抽象类中的area()方法
	public double area() {
	
		return length * width;
	}

	//重写父类Graph抽象类中的girth()方法
	public double girth() {
	
		return (length + width)*2;
	}

	public String toString() {
		return " 颜色 = " + red + ", 是否填充 = " + HavePadding + "";
	}
	
	public int comparable(Graph graph) {
		// TODO Auto-generated method stub
		return 0;
	}


}
//创建测试类
public class TestGraph{

	public static void main(String[] args) {
		
		//分别实例化square、cricle、rectangle
		Graph square = new Square(4.0,"黄色","无填充");
		Graph cricle = new Cricle(3.0,"绿色","有填充");
		Graph rectangle = new Rectangle(10.0,5.0,"红色","有填充");

		//进行打印输出各个图形的面积与周长
		System.out.println("正方形信息为 :" + square.toString() + "\n"+"正方形的面积为 :"+ square.area()+" 正方形的周长为 :" + square.girth() +"\n");
		System.out.println("圆形信息为 :" + cricle.toString() + "\n"+"圆形的面积为 :"+ cricle.area()+" 圆形的周长为 :" + cricle.girth() +"\n");
		System.out.println("长方形信息为 :" + rectangle.toString() + "\n"+"长方形的面积为 :"+ rectangle.area()+" 长方形的周长为 :" + rectangle.girth() +"\n");
	
	}

}
  1. 在比较各个图形的大小;

第二点解答如下:

  1. (创建一个接口Comparable;接口中创建一个comparaTo()方法找出数组中面积最大的图形。)
  2. (图形类Graph实现接口并重新comparaTo()方法)
  3. (创建一个TestGraphs测试类)

代码如下:

public interface Comparable {

	public int comparable(Graph graph);
	
}
public class TsteGraphs {

	public static void main(String[] args) {
	 //实例化图像对象数组
		Graph[] gra = new Graph[10];
		for(int i=0;i<3;i++){
			Cricle c = new Cricle(2.0+i);
			gra[i] = c;
		}
		
		for(int i=3;i<7;i++){
			Square s = new Square(3.0+i);
			gra[i] = s;
		}
		
		for(int i=7;i<10;i++){
			Rectangle r = new Rectangle(3.0+i,4.0+i);
			gra[i] = r;
		}
		
		Graph max = gra[0];  //认为第一个面积是最大的,再用for比较,把最大的赋值给max
		
		for(int i=0;i<gra.length;i++){
			if(gra[i].area()>max.area()){
				max = gra[i];
			}
		}
		
		System.out.println("最大图形为:"+max.area());

	}

}
发布了25 篇原创文章 · 获赞 7 · 访问量 2794

猜你喜欢

转载自blog.csdn.net/LagerSwan/article/details/101597078