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

利用接口实现。

上代码。

Contants.java

常量存储类

  1. package com.fuxuemingzhu.solidgraphics.contants;
  2. /**
  3. * <p>
  4. * Title: Contants
  5. * </p>
  6. * <p>
  7. * Description:常量类,存放程序里用到的常量值
  8. * </p>
  9. *
  10. * @author fuxuemingzhu
  11. *
  12. * @email fuxuemingzhu@163.com
  13. *
  14. * @date 2014年10月28日 下午2:18:43
  15. */
  16. public class Contants {
  17. /**
  18. * PI 圆周率
  19. */
  20. public static float PI = (float) Math.PI;
  21. }

SolidGraphics.java

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

  1. package com.fuxuemingzhu.solidgraphics.base;
  2. /**
  3. * <p>
  4. * Title: SolidGraphics
  5. * </p>
  6. * <p>
  7. * Description:立体图形接口,所有立体图形都要实现这个接口
  8. * </p>
  9. *
  10. * @author fuxuemingzhu
  11. *
  12. * @email fuxuemingzhu@163.com
  13. *
  14. * @date 2014年10月28日 下午1:52:22
  15. */
  16. public interface SolidGraphics {
  17. /**
  18. * <p>
  19. * Title: caculateArea
  20. * </p>
  21. * <p>
  22. * Description:计算立体图形的表面积
  23. * </p>
  24. *
  25. * @return 立体的表面积
  26. *
  27. */
  28. public float caculateArea();
  29. /**
  30. * <p>
  31. * Title: caculateVolume
  32. * </p>
  33. * <p>
  34. * Description:计算立体图形的体积
  35. * </p>
  36. *
  37. * @return 立体的体积
  38. *
  39. */
  40. public float caculateVolume();
  41. }

Ball.java

球类

  1. package com.fuxuemingzhu.solidgraphics.entity;
  2. import com.fuxuemingzhu.solidgraphics.base.SolidGraphics;
  3. import com.fuxuemingzhu.solidgraphics.contants.Contants;
  4. /**
  5. * <p>
  6. * Title: Ball
  7. * </p>
  8. * <p>
  9. * Description:球类
  10. * </p>
  11. *
  12. * @author fuxuemingzhu
  13. *
  14. * @email fuxuemingzhu@163.com
  15. *
  16. * @date 2014年10月28日 下午1:54:53
  17. */
  18. public class Ball implements SolidGraphics {
  19. /**
  20. * r 球的半径
  21. */
  22. private float r;
  23. /**
  24. * <p>
  25. * Title: Ball
  26. * </p>
  27. * <p>
  28. * Description: 构造方法,根据球的半径构造球
  29. * </p>
  30. *
  31. * @param r
  32. */
  33. public Ball(float r) {
  34. super();
  35. this.r = r;
  36. }
  37. /**
  38. * (非 Javadoc)
  39. * <p>
  40. * Title: caculateArea
  41. * </p>
  42. * <p>
  43. * Description:计算球的表面积
  44. * </p>
  45. *
  46. * @return 立体的表面积
  47. * @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>
  48. */
  49. public float caculateArea() {
  50. float area = (float) (4 * Contants.PI * Math.pow(r, 2));
  51. return area;
  52. }
  53. /**
  54. * (非 Javadoc)
  55. * <p>
  56. * Title: caculateVolume
  57. * </p>
  58. * <p>
  59. * Description:计算球的体积
  60. * </p>
  61. *
  62. * @return 立体的体积
  63. * @see com.caifugui.solidgraphics.base.SolidGraphics#caculateVolume()
  64. */
  65. public float caculateVolume() {
  66. float volume = (float) ((4f / 3f) * Contants.PI * Math.pow(r, 3));
  67. return volume;
  68. }
  69. /**
  70. * @return the r
  71. */
  72. public float getR() {
  73. return r;
  74. }
  75. /**
  76. * @param r
  77. * the r to set
  78. */
  79. public void setR(float r) {
  80. this.r = r;
  81. }
  82. }

Cylinder.java

圆柱类

  1. package com.fuxuemingzhu.solidgraphics.entity;
  2. import com.fuxuemingzhu.solidgraphics.base.SolidGraphics;
  3. import com.fuxuemingzhu.solidgraphics.contants.Contants;
  4. /**
  5. * <p>
  6. * Title: Cylinder
  7. * </p>
  8. * <p>
  9. * Description:圆柱类
  10. * </p>
  11. *
  12. * @author fuxuemingzhu
  13. *
  14. * @email fuxuemingzhu@163.com
  15. *
  16. * @date 2014年10月28日 下午1:55:07
  17. */
  18. public class Cylinder implements SolidGraphics {
  19. /**
  20. * r 圆柱的半径
  21. */
  22. private float r;
  23. /**
  24. * h 圆柱的高
  25. */
  26. private float h;
  27. /**
  28. * <p>
  29. * Title: Cylinder
  30. * </p>
  31. * <p>
  32. * Description:构造方法,根据圆柱的半径和高构造圆柱
  33. * </p>
  34. *
  35. * @param r
  36. * @param h
  37. */
  38. public Cylinder(float r, float h) {
  39. super();
  40. this.r = r;
  41. this.h = h;
  42. }
  43. /**
  44. * (非 Javadoc)
  45. * <p>
  46. * Title: caculateArea
  47. * </p>
  48. * <p>
  49. * Description:计算圆柱的表面积
  50. * </p>
  51. *
  52. * @return 立体的表面积
  53. * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateArea()
  54. */
  55. public float caculateArea() {
  56. float area = (float) (Contants.PI * Math.pow(r, 2) * 2 + 2
  57. * Contants.PI * r * h);
  58. return area;
  59. }
  60. /**
  61. * (非 Javadoc)
  62. * <p>
  63. * Title: caculateVolume
  64. * </p>
  65. * <p>
  66. * Description:计算圆柱的体积
  67. * </p>
  68. *
  69. * @return 立体的体积
  70. * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateVolume()
  71. */
  72. public float caculateVolume() {
  73. float volume = (float) (Contants.PI * Math.pow(r, 2) * h);
  74. return volume;
  75. }
  76. /**
  77. * @return the r
  78. */
  79. public float getR() {
  80. return r;
  81. }
  82. /**
  83. * @param r
  84. * the r to set
  85. */
  86. public void setR(float r) {
  87. this.r = r;
  88. }
  89. /**
  90. * @return the h
  91. */
  92. public float getH() {
  93. return h;
  94. }
  95. /**
  96. * @param h
  97. * the h to set
  98. */
  99. public void setH(float h) {
  100. this.h = h;
  101. }
  102. }

Tapered.java

圆锥类

  1. package com.fuxuemingzhu.solidgraphics.entity;
  2. import com.fuxuemingzhu.solidgraphics.base.SolidGraphics;
  3. import com.fuxuemingzhu.solidgraphics.contants.Contants;
  4. /**
  5. * <p>
  6. * Title: Tapered
  7. * </p>
  8. * <p>
  9. * Description:圆锥类
  10. * </p>
  11. *
  12. * @author fuxuemingzhu
  13. *
  14. * @email fuxuemingzhu@163.com
  15. *
  16. * @date 2014年10月28日 下午1:55:18
  17. */
  18. public class Tapered implements SolidGraphics {
  19. /**
  20. * r 圆锥的半径
  21. */
  22. private float r;
  23. /**
  24. * h 圆锥的高
  25. */
  26. private float h;
  27. /**
  28. * <p>
  29. * Title: Tapered
  30. * </p>
  31. * <p>
  32. * Description:构造方法,根据圆锥的半径和高构造圆锥
  33. * </p>
  34. *
  35. * @param r
  36. * @param h
  37. */
  38. public Tapered(float r, float h) {
  39. super();
  40. this.r = r;
  41. this.h = h;
  42. }
  43. /**
  44. * (非 Javadoc)
  45. * <p>
  46. * Title: caculateArea
  47. * </p>
  48. * <p>
  49. * Description: 计算圆锥的表面积
  50. * </p>
  51. *
  52. * @return 立体的表面积
  53. * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateArea()
  54. */
  55. public float caculateArea() {
  56. float area = (float) (0.5f * Math.sqrt(Math.pow(r, 2) + Math.pow(h, 2))
  57. * 2 * Contants.PI * r + Contants.PI * Math.pow(r, 2));
  58. return area;
  59. }
  60. /**
  61. * (非 Javadoc)
  62. * <p>
  63. * Title: caculateVolume
  64. * </p>
  65. * <p>
  66. * Description: 计算圆锥的体积
  67. * </p>
  68. *
  69. * @return 立体的体积
  70. * @see com.fuxuemingzhu.solidgraphics.base.SolidGraphics#caculateVolume()
  71. */
  72. public float caculateVolume() {
  73. float volume = (float) ((1f / 3f) * Contants.PI * Math.pow(r, 2) * h);
  74. return volume;
  75. }
  76. /**
  77. * @return the r
  78. */
  79. public float getR() {
  80. return r;
  81. }
  82. /**
  83. * @param r
  84. * the r to set
  85. */
  86. public void setR(float r) {
  87. this.r = r;
  88. }
  89. /**
  90. * @return the h
  91. */
  92. public float getH() {
  93. return h;
  94. }
  95. /**
  96. * @param h
  97. * the h to set
  98. */
  99. public void setH(float h) {
  100. this.h = h;
  101. }
  102. }

Main.java

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

  1. package com.fuxuemingzhu.solidgraphics.main;
  2. import com.fuxuemingzhu.solidgraphics.entity.Ball;
  3. import com.fuxuemingzhu.solidgraphics.entity.Cylinder;
  4. import com.fuxuemingzhu.solidgraphics.entity.Tapered;
  5. /**
  6. * <p>
  7. * Title: Main
  8. * </p>
  9. * <p>
  10. * Description:主类,展示各立体的表面积,体积等信息
  11. * </p>
  12. *
  13. * @author fuxuemingzhu
  14. *
  15. * @email fuxuemingzhu@163.com
  16. *
  17. * @date 2014年10月28日 下午3:46:57
  18. */
  19. public class Main {
  20. /**
  21. * ball 声明一个球体
  22. */
  23. private static Ball ball;
  24. /**
  25. * cylinder 声明一个圆柱体
  26. */
  27. private static Cylinder cylinder;
  28. /**
  29. * tapered 声明一个圆锥体
  30. */
  31. private static Tapered tapered;
  32. /**
  33. * <p>
  34. * Title: main
  35. * </p>
  36. * <p>
  37. * Description:main()方法,程序的入口
  38. * </p>
  39. *
  40. * @param args
  41. *
  42. */
  43. public static void main(String[] args) {
  44. // ///构造并展示球体
  45. showBall(8f);
  46. // //构造并展示圆柱体
  47. showCylinder(4f, 10f);
  48. // //构造并展示圆锥体
  49. showTapered(4f, 10f);
  50. }
  51. /**
  52. * <p>
  53. * Title: showBall
  54. * </p>
  55. * <p>
  56. * Description:构造并展示一个球体
  57. * </p>
  58. *
  59. * @param r
  60. *
  61. */
  62. private static void showBall(float r) {
  63. // //构造一个球体
  64. ball = new Ball(r);
  65. // //展示球体
  66. System.out.println("输入的球的半径是:" + ball.getR());
  67. System.out.println("此球的表面积是:" + ball.caculateArea());
  68. System.out.println("此球的体积是:" + ball.caculateVolume() + "\n");
  69. }
  70. /**
  71. * <p>
  72. * Title: showCylinder
  73. * </p>
  74. * <p>
  75. * Description:构造并展示一个圆柱体
  76. * </p>
  77. *
  78. * @param r
  79. * @param h
  80. *
  81. */
  82. private static void showCylinder(float r, float h) {
  83. // /构造一个圆柱体
  84. cylinder = new Cylinder(r, h);
  85. // /展示圆柱体
  86. System.out.println("输入的圆柱的底面圆半径是:" + cylinder.getR() + ",高为:"
  87. + cylinder.getH());
  88. System.out.println("此圆柱的表面积是:" + cylinder.caculateArea());
  89. System.out.println("此圆柱的体积是:" + cylinder.caculateVolume() + "\n");
  90. }
  91. /**
  92. * <p>
  93. * Title: showTapered
  94. * </p>
  95. * <p>
  96. * Description:构造并展示一个圆锥体
  97. * </p>
  98. *
  99. * @param r
  100. * @param h
  101. *
  102. */
  103. private static void showTapered(float r, float h) {
  104. // ///构造一个圆锥体
  105. tapered = new Tapered(r, h);
  106. // /展示圆锥体
  107. System.out.println("输入的圆锥的底面圆半径是:" + tapered.getR() + ",高为:"
  108. + tapered.getH());
  109. System.out.println("此圆锥的表面积是:" + tapered.caculateArea());
  110. System.out.println("此圆锥的体积是:" + tapered.caculateVolume() + "\n");
  111. }
  112. }

附运行截图。

java源码——计算立体图形的表面积和体积的更多相关文章

  1. java源码——计算不同图形的周长和面积

    计算任意三角形,正方形,正五边形,圆形的周长和面积. 利用类的继承实现. 将计算结果进行输出. 不多说,贴码. Contants.java 常量存储类 <pre name="code& ...

  2. java源码——计算大于一个数的最小素数

    根据输入数字,计算大于一个数的最小素数. 话不多说,直接贴码. package com.fuxuemingzhu.countprime.main; import java.util.Scanner; ...

  3. Java练习 SDUT-3337_计算长方体、四棱锥的表面积和体积

    计算长方体.四棱锥的表面积和体积 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 计算如下立体图形的表面积和体积. 从图 ...

  4. Tika结合Tesseract-OCR 实现光学汉字识别(简体、宋体的识别率百分之百)—附Java源码、测试数据和训练集下载地址

     OCR(Optical character recognition) —— 光学字符识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向.可 ...

  5. 解密随机数生成器(二)——从java源码看线性同余算法

    Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术 ...

  6. Java源码解读(一)——HashMap

    HashMap作为常用的一种数据结构,阅读源码去了解其底层的实现是十分有必要的.在这里也分享自己阅读源码遇到的困难以及自己的思考. HashMap的源码介绍已经有许许多多的博客,这里只记录了一些我看源 ...

  7. 24点扑克牌游戏——(含java源码)(GUI实现)

    给出四个数字,要求,在其间添加运算符和括号,使得计算结果等于24. 括号的放置即为决定哪几个数先进行计算.所以,我们先确定首先进行计算的两个相邻的数,计算完成后,就相当于剩下三个数字,仍需要在它们之间 ...

  8. 从Java源码到Java字节码

    Java最主流的源码编译器,javac,基本上不对代码做优化,只会做少量由Java语言规范要求或推荐的优化:也不做任何混淆,包括名字混淆或控制流混淆这些都不做.这使得javac生成的代码能很好的维持与 ...

  9. kafka对消费者分配分区规则(Java源码)

    在上一篇 kafka topic消息分配partition规则(Java源码) 我们对生产者产生的消息分配partition规则进行了分析,那么本章我们来看看消费者是怎么样分配partition的. ...

随机推荐

  1. 【机器学习与R语言】11- Kmeans聚类

    目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...

  2. BaiduPCS-Go----百度云下载工具

    1.网页登录百度网盘:https://pan.baidu.com/2.百度输入法生成:http://pcs.baidu.com/rest/2.0/pcs/file?app_id=265486& ...

  3. (转载)java中判断字符串是否为数字的方法的几种方法

    java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  4. 每日自动健康打卡(Python+腾讯云服务器)

    每日自动健康打卡(Python+腾讯云服务器) 1.配置需要 python3.7,Chrome或者Edeg浏览器,Chrome驱动或者Edge驱动 #需要配置selenium库,baidu-aip库, ...

  5. 商业创新不能等?用友低代码开发平台YonBuilder为您加速!

    随着云计算.人工智能.物联网.大数据.5G等新一代技术的快速发展,越来越多的企业希望借助技术的力量加速数智化转型,期许通过更加敏捷和强大的应用系统推动企业的商业创新速度.但传统软件开发周期长.开发成本 ...

  6. 理解各种不同含义的 new 和 delete

    new operator new操作符 operator new 操作符new placement new 定位new string *ps = new string("Memory Man ...

  7. oracle 日期语言格式化

    TO_DATE ('17-JUN-87', 'dd-mm-yy', 'NLS_DATE_LANGUAGE = American')

  8. @Transactional注解详细使用

    一.@Transactional 注解使用 @Transactional  注解只能用在public 方法上,如果用在protected或者private的方法上,不会报错,但是该注解不会生效. @T ...

  9. Linux学习 - 目录表

    目录名 作用 权限 说明 /bin/ 存放系统命令的目录 所有用户 存放在/bin/下的命令单用户模式下也可以执行 /sbin/ 保存和系统环境设置相关的命令 root                 ...

  10. RAC中常见的高级用法-组合

    组合: concat组合:           按一定顺序执行皇上与皇太子关系 concat底层实现:     1.当拼接信号被订阅,就会调用拼接信号的didSubscribe     2.didSu ...