计算各种图形的周长(接口与多态)

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

定义接口Shape,定义求周长的方法length()。

定义如下类实现接口Shape的抽象方法:

(1)三角形类Triangle (2)长方形类Rectangle (3)圆形类Circle等。

定义测试类ShapeTest,用Shape接口定义变量shape,用其指向不同类形的对象,输出各种图形的周长。并为其他的Shape接口实现类提供良好的扩展性。

Input

输入多组数值型数据(double);

一行中若有1个数,表示圆的半径;

一行中若有2个数(中间用空格间隔),表示长方形的长度、宽度。

一行中若有3个数(中间用空格间隔),表示三角形的三边的长度。

若输入数据中有负数,则不表示任何图形,周长为0。

Output

行数与输入相对应,数值为根据每行输入数据求得的图形的周长(保留2位小数)。

Sample Input

1

2 3

4 5 6

2

-2

-2 -3

Sample Output

6.28

10.00

15.00

12.56

0.00

0.00

Hint

构造三角形时要判断给定的三边的长度是否能组成一个三角形,即符合两边之和大于第三边的规则;

计算圆周长时PI取3.14。

import java.util.*;

public class Main
{
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
double a,b,c;
Shape x;
String str;
String []s;
while(cin.hasNextLine())
{
str = cin.nextLine();
s = str.split(" ");
if(s.length==1)
{
a = Double.parseDouble(s[0]);
x = new Circle(a);
System.out.printf("%.2f\n",x.length());
}
else if(s.length==2)
{
a = Double.parseDouble(s[0]);
b = Double.parseDouble(s[1]);
x = new Rectangle(a,b);
System.out.printf("%.2f\n",x.length());
}
else if(s.length==3)
{
a = Double.parseDouble(s[0]);
b = Double.parseDouble(s[1]);
c = Double.parseDouble(s[2]);
x = new Triangle(a,b,c);
System.out.printf("%.2f\n",x.length());
}
}
cin.close();
}
} interface Shape
{
public double length();
} class Triangle implements Shape
{
double a,b,c;
Triangle(double a,double b,double c)
{
this.a = a;
this.b = b;
this.c = c;
}
public double length()
{
if(a<=0||b<=0||c<=0)
return 0;
if(a+b<=c||a+c<=b||b+c<=a)
return 0;
return a + b + c;
}
} class Rectangle implements Shape
{
double a,b;
Rectangle(double a,double b)
{
this.a = a;
this.b = b;
}
public double length()
{
if(a<=0||b<=0)
return 0;
return (a + b) * 2;
}
} class Circle implements Shape
{
double a;
Circle(double a)
{
this.a = a;
}
public double length()
{
if(a<=0)
return 0;
return a * 3.14 * 2;
}
}

Java练习 SDUT-3338_计算各种图形的周长(接口与多态)的更多相关文章

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

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

  2. Java程序设计(2021春)——第四章接口与多态笔记与思考

    Java程序设计(2021春)--第四章接口与多态笔记与思考 本章概览: 4.1 接口(接口的概念和声明接口.实现接口的语法) 4.2 类型转换 4.3 多态的概念 4.4 多态的应用 4.5 构造方 ...

  3. Java程序设计(2021春)——第四章接口与多态课后题(选择题+编程题)答案与详解

    Java程序设计(2021春)--第四章接口与多态课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第四章接口与多态课后题(选择题+编程题)答案与详解 第四章选择题 4.0 ...

  4. java源码——计算立体图形的表面积和体积

    计算球,圆柱,圆锥的表面积和体积. 利用接口实现. 上代码. Contants.java 常量存储类 package com.fuxuemingzhu.solidgraphics.contants; ...

  5. Java集合框架练习-计算表达式的值

    最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...

  6. 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行

    [TOC] 简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行 程序源码 import java.io.IOException; import java.util. ...

  7. Java知多少(84)图形界面之布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...

  8. AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件

    AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件( component s). 由于Java是一种独立于平台的 程序设计语言 ,但GUI ...

  9. Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本

    一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...

随机推荐

  1. Sql Server实现自动增长

    在学习中遇到这个问题 数据库里有编号字段 BH00001 BH00002 BH00003 BH00004 如何实现自动增长 --下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号. --得 ...

  2. 理解 Python 语言中的 defaultdict

    众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined).但是有时候,字典中的每个键都存在默认值是非常 ...

  3. java中error和exception的区别

    转自:https://www.jianshu.com/p/e8bbee3c1c4a Error类和Exception类的父类都是throwable类,他们的区别是: Error类一般是指与虚拟机相关的 ...

  4. 微信小程序之组件的集合(三)

    看看音乐播放组件是如何实现完成的音乐的播放的!!! 一.音乐music组件的开发 1.页面以及页面样式的开发 // music组件页面开发 <view hidden="{{hidden ...

  5. c#还有一点不太明白,既然开启了线程为何还要委托呢?

    2013-07-15 09:33threadroc | 浏览 1611 次 既然开启了线程为何还要委托呢?,开启线程本身不就是委托吗?为何委托要显示声明呢?Thread thread = new Th ...

  6. php用mysql方式连接数据库出现Deprecated报错

    以上是用php5.5 连接mysql数据库时报的错. 于是我用php5.4 连接正常没有报错. 这与mysql版本无关系,php 5.x版本,如5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器 ...

  7. 面试Nginx的几个常见问题(

    1.Nginx 服务器上的 Master 和 Worker 进程分别是什么 Master 进程:读取及评估配置和维持 Worker 进程:处理请求   2.怎么添加模块? Firstly, you h ...

  8. [jnhs]使用netbeans生成的webapp发布到tomcat是需要改名字的,不然就是404Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

    2018-12-21更新 退出tomcat然后删除解压之后的文件夹,然后再启动tomcat也可以解决(安装版tomcat) 2018-12-9更新 有时候这样也可以解决 第一次使用tomcat发布we ...

  9. python实例 字典

    #! /usr/bin/python x={'a':'aaa','b':'bbb','c':12} print (x['a']) print (x['b']) print (x['c']) for k ...

  10. 将jacoco集成到测试工具平台

    最近在做接口测试,想通过代码覆盖率来判断一下接口用例是否缺失,但是每次通过命令来生成覆盖率报告,感觉太麻烦,所以就想着把jacoco集成到测试工具平台中,只需要点几个按钮,就能查看到覆盖率报告. 测试 ...