欢迎使用图形面积周长计算器(圆、三角形、方形)(使用了封装继承多态和接口)

父类

public abstract class Fu {

	private double area;//面积
	private double girth;//周长
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	//get、set方法
	public double getArea() {
		return area;
	}
	public void setArea(double area) {
		this.area = area;
	}
	public double getGirth() {
		return girth;
	}
	public void setGirth(double girth) {
		this.girth = girth;
	}
	
	
}
```java
圆

import java.text.DecimalFormat;

public class Circle extends Fu implements Computed{

	private double r;

	public double getR() {
		return r;
	}

	public void setR(double r) {
		this.r = r;
	}

	@Override
	public double s() {
		// TODO Auto-generated method stub
		double src = Math.PI * r * r;
		src = (double) Math.round(src * 100) / 100;
		return src;
	}

	@Override
	public double l() {
		// TODO Auto-generated method stub
		double zhouchang = Math.PI * 2 * r;
		zhouchang = (double) Math.round(zhouchang * 100) / 100;
		return zhouchang;
	}

}


```java
方形

import java.text.DecimalFormat;

public class Square extends Fu implements Computed{

	private double a;//长
	private double b;//宽
	public double getA() {
		return a;
	}
	public void setA(double a) {
		this.a = a;
	}
	public double getB() {
		return b;
	}
	public void setB(double b) {
		this.b = b;
	}
	
	@Override
	public double l() {
		// TODO Auto-generated method stub
		double src = a * 2 + b * 2;
		DecimalFormat df= new DecimalFormat("#.##");
		/*src = (double) Math.round(src * 100) / 100;*/
		return Double.parseDouble(df.format(src));
	}
	
	@Override
	public double s() {
		// TODO Auto-generated method stub
		double src = a * b;
		src = (double) Math.round(src * 100) / 100;
		return src;
	}
	
}
三角形

public class Triangle extends Fu implements Computed {
	// 定义三条边的长度
	private double a;
	private double b;
	private double c;

	public double getA() {
		return a;
	}

	public void setA(double a) {
		this.a = a;
	}

	public double getB() {
		return b;
	}

	public void setB(double b) {
		this.b = b;
	}

	public double getC() {
		return c;
	}

	public void setC(double c) {
		this.c = c;
	}

	@Override
	public double l() {
		// TODO Auto-generated method stub
		double src = a + b + c;
		return src;
	}
	
	@Override
	public double s() {
		// TODO Auto-generated method stub
		double l = l();
		double src = Math.sqrt(l * (l - a) * (l - b) * (l - c));
		 src = (double) Math.round(src * 100) / 100;
		return src;
	}
}
接口类

public interface Computed {

	public double s();//面积
	public double l();//周长
}
测试类(main方法)

import java.util.Scanner;

public class Test {
    Scanner sc = new Scanner(System.in);
    String[] history = new String[100];//实现对数据的存储
	public Test() {
		while(true) {
		System.out.println("请选择:1.圆形2.三角形3.方形4.查看记录");
		int choose = sc.nextInt();
		switch(choose) {
		case 1:
			Circle circle = new Circle();
			circle.setName("圆形");
			System.out.println("请输入半径:");
			circle.setR(sc.nextDouble());
			circle.setArea(circle.s());
			circle.setGirth(circle.l());
			show(circle);
			break;
		case 2:
			Triangle triangle = new Triangle();
			triangle.setName("三角形");
			System.out.println("请分别输入三边长");
			triangle.setA(sc.nextDouble());
			triangle.setB(sc.nextDouble());
			triangle.setC(sc.nextDouble());
			triangle.setArea(triangle.s());
			triangle.setGirth(triangle.l());
			show(triangle);
			break;
		case 3:
			Square square = new Square();
			square.setName("方形");
			System.out.println("请分别输入长、宽:");
			square.setA(sc.nextDouble());
			square.setB(sc.nextDouble());
			square.setArea(square.s());
			square.setGirth(square.l());
			show(square);
			break;
		case 4:
			String asd = "";
			for (int i = 0; i < history.length; i++) {
				if(history[i] != null) {
				asd += history[i]+",";
				}
			}
			System.out.println(asd.substring(0,asd.length()-1));
			break;
		default:
			System.out.println("输入有误!");
			break;
		}
		}
	}
	public void show(Fu fu) {
		//拼接字符串存储
		String aaa = fu.getName()+"面积是"+fu.getArea()+"周长是"+fu.getGirth();
		for (int i = 0; i < history.length; i++) {
			if(history[i] == null) {
				history[i] = aaa;
				break;
			}
		}
		while(true) {
		System.out.println("您要计算的是:1.面积2.周长3.放回上一级");
		int choose = sc.nextInt();
		switch(choose) {
		case 1:
			System.out.println("面积是:"+fu.getArea());
			break;
		case 2:
			System.out.println("周长是:"+fu.getGirth());
			break;
		case 3:
			return;
		}
		}
	}
	public static void main(String[] args) {
		System.out.println("******欢迎使用面积周长计算器*******");
		Test a = new Test();
	}
}
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值