计算各种图形的周长(接口与多态)
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。
Source
zhouxq

import java.text.DecimalFormat;
import java.util.Scanner;
interface Shape{double length();
}
// 三角形继承接口
class Triangle implements Shape{double x,y,z;Triangle(double x,double y,double z){if(x > 0 && y > 0 && z > 0) {this.x = x;this.y = y;this.z = z;}else {x = y = z = 0;}}public double length() {    //重写接口必须明显声明public权限return x+y+z;}
}
//长方形实现接口
class Rectangle implements Shape{double x,y;Rectangle(double x,double y){if(x > 0 && y > 0) {this.x = x;this.y = y;}else {x = y = 0;}}public double length() {return (x+y)*2;}
}
//圆形实现接口
class Circle implements Shape{double r;final double PI = 3.14;Circle(double r){if(r > 0) {this.r = r;}else r = 0;}public double length() {return PI*2*r;}
}
class ShapeTest{public double length(Shape shape) {return shape.length();}
}
public class Main {public static void main(String args[]){Scanner input = new Scanner(System.in);ShapeTest shapetest = new ShapeTest();DecimalFormat df = new DecimalFormat("0.00");while(input.hasNext()) {String str = input.nextLine();Shape shape = null;String[] ch = str.split(" ");int i;double[] a = new double[50];for(i = 0;i < ch.length;i++) {a[i] = Double.parseDouble(ch[i]);}if(i == 1) {shape = new Circle(a[0]);}else if(i == 2) {shape = new Rectangle(a[0],a[1]);}else if(i == 3) {for(int j = 0;j < i;j++) {for(int k = 0;k < j;k++) {if(a[k] > a[k+1]) {double t = a[k];a[k] = a[k+1];a[k+1] = t;}}}if((a[0] + a[1] > a[2]) && a[0] > 0) {shape = new Triangle(a[0],a[1],a[2]);}}if(shape == null) {System.out.println("0.00");}else {System.out.println(df.format(shapetest.length(shape)));}}input.close();}
}

计算各种图形的周长(接口与多态)(Java)相关推荐

  1. Java练习 SDUT-3338_计算各种图形的周长(接口与多态)

    计算各种图形的周长(接口与多态) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 定义接口Shape,定义求周长的方法l ...

  2. Python 面向对象 计算各种图形的周长(接口与多态)

    Python 面向对象 计算各种图形的周长(接口与多态) Description 定义接口Shape,定义求周长的方法length(). 定义如下类实现接口Shape的抽象方法: (1)三角形类Tri ...

  3. Java计算各种图形的周长、面积利用接口,多态等知识实现

    知识点 接口,接口的实现 方法的重写 多态的运用 题目 利用接口.类.多态等知识,计算各种图形的周长和面积(圆,长方形,正方形) 解题思路: 创建一个接口Calculate,包含有三个方法, 求解周长 ...

  4. 7-3 sdut-oop-6 计算各种图形的周长(接口与多态) (10 分)

    (备注:本人只是一个小小的知识搬运工,内容包含个人见解,如有错误请多多指教!) 7-3 sdut-oop-6 计算各种图形的周长(接口与多态) (10 分) 定义接口Shape,定义求周长的方法len ...

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

    Java-计算各种图形的周长(接口与多态) Description 定义接口Shape,定义求周长的方法length(). 定义如下类实现接口Shape的抽象方法: (1)三角形类Triangle ( ...

  6. sdut-oop-6 计算各种图形的周长(多态)

    sdut-oop-6 计算各种图形的周长(多态) 定义接口或类 Shape,定义求周长的方法length(). 定义如下类,实现接口Shape或父类Shape的方法. (1)三角形类Triangle ...

  7. 计算各种图形的周长 python java

    计算各种图形的周长(多态) 定义接口或类 Shape,定义求周长的方法length(). 定义如下类,实现接口Shape或父类Shape的方法.(1)三角形类Triangle (2)长方形类Recta ...

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

    Description 定义接口Shape,定义求周长的方法length(). 定义如下类实现接口Shape的抽象方法: (1)三角形类Triangle (2)长方形类Rectangle (3)圆形类 ...

  9. PTA 7-7 sdut-oop-6 计算各种图形的周长(接口与多态) (10 分) JAVA

    定义接口Shape,定义求周长的方法length(). 定义如下类实现接口Shape的抽象方法: (1)三角形类Triangle (2)长方形类Rectangle (3)圆形类Circle等. 定义测 ...

最新文章

  1. StarUML中时序图添加小人
  2. 第十六周项目一-小玩文件(1)
  3. crontab命令简介
  4. C++:vector中的resize()函数 VS reserve()函数
  5. 英特尔核芯显卡控制面板没有了_只认性能你就输了!英特尔第十代酷睿处理器最全解析...
  6. 丰巢快递将强制收费引网友吐槽,全国第一驿站表示继续免费
  7. access insert语句怎么写_擦亮自己的眼睛去看SQLServer之简单Insert
  8. [转]python中去掉字符串中的\xa0、\t、\n
  9. 爬虫:爬取微软必应翻译做成API
  10. linux下解压rar文件
  11. IM云通信行业步入快车道,融云或将和Twilio一样实现资本上市
  12. 宏基服务器 安装系统,手把手教你acer宏碁笔记本电脑如何重装系统
  13. 插入法排序(c语言)
  14. 人工智能导论——概念篇
  15. Prometheus监控系统:监控交换机流量、状态等(snmp_exporter)
  16. 常用Windows系统进程列表
  17. Word换页不用频繁敲回车
  18. Redis 动态字符串(SDS)底层原理详解
  19. 案件被终本后,如何继续执行?
  20. java enhancer_service拦截器使用Enhancer.enhance()方法报错,使用@Before正常

热门文章

  1. 【转】ARM GIC中断系列(八):gicv3架构-波形为例、系列总结
  2. 不是吧!你还在手动拉窗帘?
  3. csdn人工客服体验2小时-9.26
  4. SAP MM 常见移动类型及定义
  5. 『这辈子就相爱《何苦要等下辈子》 李草青青、肖玄MV』
  6. python与redis数据库交互中zadd、zincrby的那些坑:(error) ERR value is not a valid float
  7. postgresql整理
  8. PLSQL入门与精通(第72章:LOGOFF触发器)
  9. JavaScript实现连缀
  10. C语言经典编程282例01