计算球,圆柱,圆锥的表面积和体积。

利用接口实现。

上代码。


Contants.java

常量存储类


package com.fuxuemingzhu.solidgraphics.contants;

/**
 * <p>
 * Title: Contants
 * </p>
 * <p>
 * Description:常量类,存放程序里用到的常量值
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email fuxuemingzhu@163.com
 * 
 * @date 2014年10月28日 下午2:18:43
 */
public class Contants {

	/**
	 * PI 圆周率
	 */
	public static float PI = (float) Math.PI;

}



SolidGraphics.java

立体图形接口,所有立体图形都要实现这个接口


package com.fuxuemingzhu.solidgraphics.base;

/**
 * <p>
 * Title: SolidGraphics
 * </p>
 * <p>
 * Description:立体图形接口,所有立体图形都要实现这个接口
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email fuxuemingzhu@163.com
 * 
 * @date 2014年10月28日 下午1:52:22
 */
public interface SolidGraphics {

	/**
	 * <p>
	 * Title: caculateArea
	 * </p>
	 * <p>
	 * Description:计算立体图形的表面积
	 * </p>
	 * 
	 * @return 立体的表面积
	 * 
	 */
	public float caculateArea();

	/**
	 * <p>
	 * Title: caculateVolume
	 * </p>
	 * <p>
	 * Description:计算立体图形的体积
	 * </p>
	 * 
	 * @return 立体的体积
	 * 
	 */
	public float caculateVolume();

}



Ball.java

球类


package com.fuxuemingzhu.solidgraphics.entity;

import com.fuxuemingzhu.solidgraphics.base.SolidGraphics;
import com.fuxuemingzhu.solidgraphics.contants.Contants;

/**
 * <p>
 * Title: Ball
 * </p>
 * <p>
 * Description:球类
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email fuxuemingzhu@163.com
 * 
 * @date 2014年10月28日 下午1:54:53
 */
public class Ball implements SolidGraphics {

	/**
	 * r 球的半径
	 */
	private float r;

	/**
	 * <p>
	 * Title: Ball
	 * </p>
	 * <p>
	 * Description: 构造方法,根据球的半径构造球
	 * </p>
	 * 
	 * @param r
	 */
	public Ball(float r) {
		super();
		this.r = r;
	}

	/**
	 * (非 Javadoc)
	 * <p>
	 * Title: caculateArea
	 * </p>
	 * <p>
	 * Description:计算球的表面积
	 * </p>
	 * 
	 * @return 立体的表面积
	 * @see com.<span style="font-family: Arial, Helvetica, sans-serif;">fuxuemingzhu</span><span style="font-family: Arial, Helvetica, sans-serif;">.solidgraphics.base.SolidGraphics#caculateArea()</span>
	 */
	public float caculateArea() {
		float area = (float) (4 * Contants.PI * Math.pow(r, 2));
		return area;
	}

	/**
	 * (非 Javadoc)
	 * <p>
	 * Title: caculateVolume
	 * </p>
	 * <p>
	 * Description:计算球的体积
	 * </p>
	 * 
	 * @return 立体的体积
	 * @see com.caifugui.solidgraphics.base.SolidGraphics#caculateVolume()
	 */
	public float caculateVolume() {

		float volume = (float) ((4f / 3f) * Contants.PI * Math.pow(r, 3));

		return volume;
	}

	/**
	 * @return the r
	 */
	public float getR() {
		return r;
	}

	/**
	 * @param r
	 *            the r to set
	 */
	public void setR(float r) {
		this.r = r;
	}

}



Cylinder.java

圆柱类


package com.fuxuemingzhu.solidgraphics.entity;

import com.fuxuemingzhu.solidgraphics.base.SolidGraphics;
import com.fuxuemingzhu.solidgraphics.contants.Contants;

/**
 * <p>
 * Title: Cylinder
 * </p>
 * <p>
 * Description:圆柱类
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email fuxuemingzhu@163.com
 * 
 * @date 2014年10月28日 下午1:55:07
 */
public class Cylinder implements SolidGraphics {

	/**
	 * r 圆柱的半径
	 */
	private float r;

	/**
	 * h 圆柱的高
	 */
	private float h;

	/**
	 * <p>
	 * Title: Cylinder
	 * </p>
	 * <p>
	 * Description:构造方法,根据圆柱的半径和高构造圆柱
	 * </p>
	 * 
	 * @param r
	 * @param h
	 */
	public Cylinder(float r, float h) {
		super();
		this.r = r;
		this.h = h;
	}

	/**
	 * (非 Javadoc)
	 * <p>
	 * Title: caculateArea
	 * </p>
	 * <p>
	 * Description:计算圆柱的表面积
	 * </p>
	 * 
	 * @return 立体的表面积
	 * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateArea()
	 */
	public float caculateArea() {

		float area = (float) (Contants.PI * Math.pow(r, 2) * 2 + 2
				* Contants.PI * r * h);

		return area;
	}

	/**
	 * (非 Javadoc)
	 * <p>
	 * Title: caculateVolume
	 * </p>
	 * <p>
	 * Description:计算圆柱的体积
	 * </p>
	 * 
	 * @return 立体的体积
	 * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateVolume()
	 */
	public float caculateVolume() {

		float volume = (float) (Contants.PI * Math.pow(r, 2) * h);

		return volume;
	}

	/**
	 * @return the r
	 */
	public float getR() {
		return r;
	}

	/**
	 * @param r
	 *            the r to set
	 */
	public void setR(float r) {
		this.r = r;
	}

	/**
	 * @return the h
	 */
	public float getH() {
		return h;
	}

	/**
	 * @param h
	 *            the h to set
	 */
	public void setH(float h) {
		this.h = h;
	}

}



Tapered.java

圆锥类


package com.fuxuemingzhu.solidgraphics.entity;

import com.fuxuemingzhu.solidgraphics.base.SolidGraphics;
import com.fuxuemingzhu.solidgraphics.contants.Contants;

/**
 * <p>
 * Title: Tapered
 * </p>
 * <p>
 * Description:圆锥类
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email fuxuemingzhu@163.com
 * 
 * @date 2014年10月28日 下午1:55:18
 */
public class Tapered implements SolidGraphics {

	/**
	 * r 圆锥的半径
	 */
	private float r;

	/**
	 * h 圆锥的高
	 */
	private float h;

	/**
	 * <p>
	 * Title: Tapered
	 * </p>
	 * <p>
	 * Description:构造方法,根据圆锥的半径和高构造圆锥
	 * </p>
	 * 
	 * @param r
	 * @param h
	 */
	public Tapered(float r, float h) {
		super();
		this.r = r;
		this.h = h;
	}

	/**
	 * (非 Javadoc)
	 * <p>
	 * Title: caculateArea
	 * </p>
	 * <p>
	 * Description: 计算圆锥的表面积
	 * </p>
	 * 
	 * @return 立体的表面积
	 * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateArea()
	 */
	public float caculateArea() {
		float area = (float) (0.5f * Math.sqrt(Math.pow(r, 2) + Math.pow(h, 2))
				* 2 * Contants.PI * r + Contants.PI * Math.pow(r, 2));
		return area;
	}

	/**
	 * (非 Javadoc)
	 * <p>
	 * Title: caculateVolume
	 * </p>
	 * <p>
	 * Description: 计算圆锥的体积
	 * </p>
	 * 
	 * @return 立体的体积
	 * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateVolume()
	 */
	public float caculateVolume() {
		float volume = (float) ((1f / 3f) * Contants.PI * Math.pow(r, 2) * h);
		return volume;
	}

	/**
	 * @return the r
	 */
	public float getR() {
		return r;
	}

	/**
	 * @param r
	 *            the r to set
	 */
	public void setR(float r) {
		this.r = r;
	}

	/**
	 * @return the h
	 */
	public float getH() {
		return h;
	}

	/**
	 * @param h
	 *            the h to set
	 */
	public void setH(float h) {
		this.h = h;
	}

}


Main.java

主类,展示各立体的表面积,体积等信息


package com.fuxuemingzhu.solidgraphics.main;

import com.fuxuemingzhu.solidgraphics.entity.Ball;
import com.fuxuemingzhu.solidgraphics.entity.Cylinder;
import com.fuxuemingzhu.solidgraphics.entity.Tapered;

/**
 * <p>
 * Title: Main
 * </p>
 * <p>
 * Description:主类,展示各立体的表面积,体积等信息
 * </p>
 * 
 * @author fuxuemingzhu
 * 
 * @email fuxuemingzhu@163.com
 * 
 * @date 2014年10月28日 下午3:46:57
 */
public class Main {

	/**
	 * ball 声明一个球体
	 */
	private static Ball ball;

	/**
	 * cylinder 声明一个圆柱体
	 */
	private static Cylinder cylinder;

	/**
	 * tapered 声明一个圆锥体
	 */
	private static Tapered tapered;

	/**
	 * <p>
	 * Title: main
	 * </p>
	 * <p>
	 * Description:main()方法,程序的入口
	 * </p>
	 * 
	 * @param args
	 * 
	 */
	public static void main(String[] args) {

		// ///构造并展示球体
		showBall(8f);

		// //构造并展示圆柱体
		showCylinder(4f, 10f);

		// //构造并展示圆锥体
		showTapered(4f, 10f);

	}

	/**
	 * <p>
	 * Title: showBall
	 * </p>
	 * <p>
	 * Description:构造并展示一个球体
	 * </p>
	 * 
	 * @param r
	 * 
	 */
	private static void showBall(float r) {
		// //构造一个球体
		ball = new Ball(r);

		// //展示球体
		System.out.println("输入的球的半径是:" + ball.getR());
		System.out.println("此球的表面积是:" + ball.caculateArea());
		System.out.println("此球的体积是:" + ball.caculateVolume() + "\n");

	}

	/**
	 * <p>
	 * Title: showCylinder
	 * </p>
	 * <p>
	 * Description:构造并展示一个圆柱体
	 * </p>
	 * 
	 * @param r
	 * @param h
	 * 
	 */
	private static void showCylinder(float r, float h) {
		// /构造一个圆柱体
		cylinder = new Cylinder(r, h);

		// /展示圆柱体
		System.out.println("输入的圆柱的底面圆半径是:" + cylinder.getR() + ",高为:"
				+ cylinder.getH());
		System.out.println("此圆柱的表面积是:" + cylinder.caculateArea());
		System.out.println("此圆柱的体积是:" + cylinder.caculateVolume() + "\n");

	}

	/**
	 * <p>
	 * Title: showTapered
	 * </p>
	 * <p>
	 * Description:构造并展示一个圆锥体
	 * </p>
	 * 
	 * @param r
	 * @param h
	 * 
	 */
	private static void showTapered(float r, float h) {
		// ///构造一个圆锥体
		tapered = new Tapered(r, h);

		// /展示圆锥体
		System.out.println("输入的圆锥的底面圆半径是:" + tapered.getR() + ",高为:"
				+ tapered.getH());
		System.out.println("此圆锥的表面积是:" + tapered.caculateArea());
		System.out.println("此圆锥的体积是:" + tapered.caculateVolume() + "\n");
	}
}


附运行截图。


java源码——计算立体图形的表面积和体积_源代码