设计圆和圆柱体

2023-11-18

编写一个完整的Java Application 程序。包含类Circle、Cylinder、Main,具体要求如下。

(1)编写类Circle,表示圆形对象,包含以下成员
①属性:

  1. radius:私有,double型,圆形半径;
    ②方法:
  2. Circle(double radius), 构造方法,用参数设置圆的半径
  3. Circle(),构造方法,将圆形初始化为半径为0。
  4. void setRadius(double r):用参数r设置radius的值
  5. double getRadius():返回radius的值
  6. double getArea(),返回圆形的面积
  7. double getPerimeter(),返回圆形的周长
  8. public String toString( ),将把当前圆对象的转换成字符串形式,例如圆半径为10.0,返回字符串"Circle(r:10.0)"。
    (2)编写一个类Cylinder,表示圆柱形对象,包含以下成员
    ①属性:
  9. height:私有,double型,圆柱体高度;
  10. circle:私有,Circle类型,圆柱体底面的圆形;
    ②方法:
  11. Cylinder(double height,Circle circle), 构造方法,用参数设置圆柱体的高度和底面的圆形
  12. Cylinder(),构造方法,将圆柱体的高度初始化为0,底面圆形初始化为一个半径为0的圆形。
  13. void setHeight(double height):用参数height设置圆柱体的高度
  14. double getHeight():返回圆柱体的高度
  15. void setCircle(Circle circle):用参数circle设置圆柱体底面的圆形
  16. Circle getCircle():返回圆柱体底面的圆形
  17. double getArea(),重写Circle类中的area方法,返回圆柱体的表面积
  18. double getVolume(),返回圆柱体的体积
  19. public String toString( ),将把当前圆柱体对象的转换成字符串形式,例如半径为10.0,高为5.0,返回字符串"Cylinder(h:5.0,Circle(r:10.0))"。
    (3)编写公共类Main,在main()方法中实现如下功能
    输入一个整数n,表示有n个几何图形。
    对于每一个几何图形,先输入一个字符串,“Circle”表示圆形,“Cylinder”表示圆柱体。
    如果是圆形,输入一个浮点数表示其半径。要求计算其面积和周长并输出。
    如果是圆柱体,输入两个浮点数分别表示其半径和高度。要求计算其面积和体积并输出。

将以下代码附在自己的代码后面:
public class Main{
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i = 0; i < n; i++) {
String str = input.next();
if(str.equals(“Circle”)) {
Circle c = new Circle(input.nextDouble());
System.out.println(“The area of " + c.toString() + " is " + String.format(”%.2f",c.getArea()));
System.out.println(“The perimeterof " + c.toString() + " is “+ String.format(”%.2f”,c.getPerimeter()));
} else if(str.equals(“Cylinder”)) {
Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
System.out.println(“The area of " + r.toString() + " is " + String.format(”%.2f",r.getArea()));
System.out.println(“The volume of " + r.toString() + " is " + String.format(”%.2f",r.getVolume()));
}
}
}
}
输入格式:
第一行输入一个整数n,表示有n个几何图形。
以下有n行,每行输入一个几何图形的数据。
每行先输入一个字符串表示几何图形的类型,“Circle”表示圆形,“Cylinder”表示圆柱体。
如果是圆形,输入一个浮点数表示其半径。
如果是圆柱体,输入两个浮点数分别表示其半径和高度。
输出格式:
如果是圆形,要求计算其面积和周长并输出。
如果是圆柱体,要求计算其面积和体积并输出。
注意,圆周率用Math.PI
输入样例:
在这里给出一组输入。例如:

4
Circle 10.0
Cylinder 10.0 10.0
Circle 1.1
Cylinder 1.1 3.4
输出样例:
在这里给出相应的输出。例如:

The area of Circle(r:10.0) is 314.16
The perimeterof Circle(r:10.0) is 62.83
The area of Cylinder(h:10.0,Circle(r:10.0)) is 1256.64
The volume of Cylinder(h:10.0,Circle(r:10.0)) is 3141.59
The area of Circle(r:1.1) is 3.80
The perimeterof Circle(r:1.1) is 6.91
The area of Cylinder(h:1.1,Circle(r:3.4)) is 96.13
The volume of Cylinder(h:1.1,Circle(r:3.4)) is 39.95
作者
殷伟凤
单位
浙江传媒学院
代码长度限制
16 KB
时间限制
400 ms
内存限制
64MB

import java.util.Scanner;
class Circle {
private double radius;
    public Circle(){radius=0;}//构造方法:将圆的半径初始化为0
    public Circle(double radius) {
        this.radius = radius;//构造方法:用参数设置圆的半径
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    public double getRadius() {
        return radius;
    }
   public double getArea(){
        return Math.pow(radius,2)*3.1415926f;//返回圆形的面积
    }
    public double getPerimeter(){
        return 2*radius*3.1415926f;    //返回圆形的周长
    }
    public String toString( ){
        return "Circle(r:"+this.radius+")";
    }
}

class Cylinder extends Circle{
private double height;
private Circle circle;

    public Cylinder(double height, Circle circle) {
        this.height = height;
        this.circle = circle;//构造方法:用参数设置高度及圆形
    }
    public Cylinder(){this.height=0;}//构造方法初始化高度为0

    public void setHeight(double height) {
        this.height = height;
    }

    public void setCircle(Circle circle) {
        this.circle = circle;
    }

    public double getHeight() {
        return height;
    }
 public Circle getCircle() {
        return circle;
    }
    public double getArea(){
        return height*circle.getPerimeter()+circle.getArea()*2;//重写Circle类中的area方法,返回圆柱体的表面积
    }
    public double getVolume(){
        return circle.getArea()*height;
    }
    public String toString( ){
       return  "Cylinder(h:"+this.height+","+this.circle.toString()+")";//当前对象转换为字符串模式
    }
}
public class Main{
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for(int i = 0; i < n; i++) {
            String str = input.next();
            if(str.equals("Circle")) {
                Circle c = new Circle(input.nextDouble());
                System.out.println("The area of " + c.toString() + " is " + String.format("%.2f",c.getArea()));
                System.out.println("The perimeterof " + c.toString() + " is "+ String.format("%.2f",c.getPerimeter()));
            } else if(str.equals("Cylinder")) {
                Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
                System.out.println("The area of " + r.toString() + " is " + String.format("%.2f",r.getArea()));
                System.out.println("The volume of " + r.toString() + " is " + String.format("%.2f",r.getVolume()));
            }
        }
        input.close();
    }
}

出现的问题:
1.input未关闭(warnings)
解决方法:在main()函数结束时加上 input.close();
出现input 未关闭原因

新的学习
**1.**tostring()字符串转换
tostring()用法讲解
EXAMPLE:

package sample;
class Villain {
    private String name;
    protected void set(String nm) {
       name = nm;
    }
    public Villain(String name) {
       this.name = name;
    }
    public String toString() {
       return "I'm a Villain and my name is " + name;
    }
}
public class Orc extends Villain {
    private int orcNumber;
    public Orc(String name, int orcNumber) {
       super(name);
       this.orcNumber = orcNumber;
    }
    public void change(String name, int orcNumber) {
       set(name);
       this.orcNumber = orcNumber;
    }
    public String toString() {
       return "Orc" + orcNumber + ":" + super.toString();
    }
    public static void main(String[] args) {
       Orc orc = new Orc("Limburger", 12);
       System.out.println(orc);
       orc.change("Bob", 19);
       System.out.println(orc);
    }
}

public String toString() {
return "I’m a Villain and my name is " + name;
public String toString() {
return “Orc” + orcNumber + “:” + super.toString();
**2.**数学引用(平方、π)
Math.pow(radius,2)【半径的平方】
Math.PI【π】
**3.**父类方法重写

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计圆和圆柱体 的相关文章

随机推荐

  • app毕业设计开题报告基于Uniapp实现的鲜花商城App

    更多项目资源 最下方联系我们 目录 Uniapp项目介绍 资料获取 Uniapp项目介绍 计算机毕业设计安卓App毕设项目之基于APP的鲜花商城 IT实战课堂 哔哩哔哩 bilibili计算机毕业设计安卓App毕设项目之基于APP的鲜花商城
  • 如何 ubuntu下启动/停止/重启MySQL

    如何启动 停止 重启MySQL 一 启动方式 1 使用 service 启动 service mysql start 2 使用 mysqld 脚本启动 etc inint d mysql start 3 使用 safe mysqld 启动
  • 安全保护策略:iOS应用程序代码保护的关键步骤和技巧

    转载 怎么保护苹果手机移动应用程序ios ipa文件中的代码 目录 转载 怎么保护苹果手机移动应用程序ios ipa文件中的代码 代码混淆步骤 1 选择要混淆保护的ipa文件 2 选择要混淆的类名称 3 选择要混淆保护的函数 方法 4 配置
  • [教程]VC++6.0的简单使用

    鉴于许多同学的vc 6 0无法正常使用 并且不会创建工程及文件 还有的同学会遇到一些编译的问题 我在这里做个小教程 1 工具的准备 首先 我把需要的资源给大家 一共就两个文件 一个安装文件 另一个是MSDEV exe 用于替换 链接 htt
  • 解决IDEA每次新建maven工程都要设置目录问题

    使用IDEA每次新建工程时都要设置这三个目录 解决方法 设置好就 了
  • 磁盘数据线接触不良的故障排查

    手头有个小型主机 运行centos 发现工作很不稳定 经常启动不起来 就算启动起来也会在几分钟内出现各种IO错误 可能出现以下几种报错 1 只读文件系统 Read only file system 尝试对磁盘写入的时候可能出现这个错误 2
  • 2 Linux系统高级

    2 Linux系统高级 1 Linux用户与权限 1 1 文件权限概述 Linux操作系统是 多任务多用户 操作系统 每当我们使用用户名登录操作系统时 Linux都会对该用户进行认证 授权审计等操作 操作系统为了识别每个用户 会给每个用户定
  • 大数据开发必备面试题Spark篇合集

    1 Hadoop 和 Spark 的相同点和不同点 Hadoop 底层使用 MapReduce 计算架构 只有 map 和 reduce 两种操作 表达能力比较欠缺 而且在 MR 过程中会重复的读写 hdfs 造成大量的磁盘 io 读写操作
  • [551]python实现Mean Shift算法

    前文介绍的K Means算法需要指定K值 分组数 本文实现的MeanShift聚类算法不需要预先知道聚类的分组数 对聚类的形状也没有限制 为了更好的理解这个算法 本帖使用Python实现Mean Shift算法 MeanShift算法详细介
  • 数字孪生系统:智慧城市数据可视化

    分享几个我觉得很泛用的智慧城市可视化大屏模板 功能齐全且强大 画面美观且酷炫 模板一 智慧城市可视化应用管理平台 整合城市相关数据资源 对公共环境 人员民生 公共安全等领域的核心指标进行态势监测与可视分析 辅助管理者全面掌控城市运行态势 提
  • Mybatis中xml文件的时间段动态查询

    解决办法1 xml特殊字符可以适用转义字符代替 lt lt 小于号 gt gt 大于号
  • pytorch----Target 2 is out of bounds

    问题 多分类网络加了两层全连接后最后输出1类 计算loss时报错Target N is out of bounds 其中的N是正在处理的数据输入的标签 即第几类 是一个 0 类数 1 的整数 最后输出1类与输入的target不符就会报错 解
  • 必读的android 文章- 收藏集 - 掘金

    写给 Android 开发者的混淆使用手册 Android 掘金 本文转自 点击打开链接 毫无疑问 混淆是打包过程中最重要的流程之一 在没有特殊原因的情况下 所有 app 都应该开启混淆 首先 这里说的的混淆其实是包括了代码压缩 代码混淆以
  • 前端常用js插件

    浏览目录 包管理器 加载器 打包工具 测试框架 框架 断言 覆盖率 运行器 QA 工具 MVC 框架和库 基于 Node 的 CMS 框架 模板引擎 Flux 数据可视化 时间轴 编辑器 文件 函数式编程 响应式编程 数据结构 日期 字符串
  • 直联和间联的区别——直连和间连的区别

    直联和间联的区别 直联就是商户直接和银联对接 商户 银联 直联一般商户自己支付手续费 间联就是商户间接和银联对接 商户 第三方支付 银联 间联也要支付 但一般是有人帮你付 直连和间连的区别 直连 指第三方支付直接与商业银行做对接 如果是本行
  • 硬件基础知识

    SPI是串行外设接口 Serial Peripheral Interface 的缩写 是一种高速的 全双工 同步的通信总线 SCLK SCLK是一种有固定周期并与运行无关的信号量 CLK CLK是一种脉冲信号 TDNN 时延神经网络 它的两
  • UE4持续集成打包(Mac脚本自动化打包)

    主要通过RunUAT进行打包 win和mac均可以打包 本次打包实现在Mac环境下 使用 Engine Build BatchFiles RunUAT sh 参考命令格式 参考文献1 RunUAT BuildCookRun project
  • 一些优秀的开源轻量级TCP/IP协议栈

    以下是一些优秀的开源轻量级TCP IP协议栈 它们适用于嵌入式设备和其他资源受限的环境 lwIP lightweight IP lwIP 是一个非常流行的开源 TCP IP 协议栈 它专门为嵌入式系统设计 具有低内存占用和高效率的特点 lw
  • 【小程序】实现经典2048小游戏

    概述 经典小游戏2048 2048小游戏对于逻辑要求还是很有技术含量的 有兴趣的可以看看 详细 以前学习时写的小游戏2048 技术含量还是不错的 有兴趣的可以看看 2048已经封装好了 在主页面直接引入文件可以直接调用 演示图 调用wxml
  • 设计圆和圆柱体

    编写一个完整的Java Application 程序 包含类Circle Cylinder Main 具体要求如下 1 编写类Circle 表示圆形对象 包含以下成员 属性 radius 私有 double型 圆形半径 方法 Circle