PTA 作业三 继承与多态 JAVA 面向对象程序设计7-1 周长计算器-1分数 30作者 Ma 单位 山东科技大学1、定义一个接口 Shape 用于表示图形

7-1 周长计算器-1

分数 30作者 Ma 单位 山东科技大学

1、定义一个接口 Shape 用于表示图形,其包含一个 double length() 的方法用于求周长。
2、定义三角形类 Triangle 、长方形类 Rectangle 、圆形类Circle分别实现接口 Shape
3、定义测试类ShapeTest并使用 Shape接口定义变量shape,用其指向不同类形的对象,输出各种图形的周长。

提示:
1、计算圆周长时PI取3.14即可;
2、需要判断能否构成三角形(任意两个边的和大于第三边),不能构成三角形的话周长为0。

输入格式:

输入多组double型数据,具体如下:
1 //表示圆的半径;
2 3 //表示长方形的长度、宽度
4 5 6 //表示三角形的三边的长度
//若输入数据中有0或负数,则不表示任何图形,周长为0。

输出格式:

图形的周长。

输入样例:

1
2 3
4 5 6

输出样例:

6.28
10.00
15.00

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB
 

import java.util.Scanner;

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

谢谢大佬关注,不定期分享学习笔记,希望大佬能多多支持,三连必回,感谢关注。 现阶段主要分享PTA平台的 JAVA语言学习,内容主要集中在JAVA语言和C语言的入门习题,近期会持续更新数据结构的课程练习,后续还会涉及计算机网络,软件工程,离散数学,计算机组成原理,等课程,还会不定期分享一些有趣的AI应用实例,偶尔也会记录些关于哲学的思考。感谢朋友们一直以来的支持(。◕ ∀ ◕。)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大葫芦臂围40狂敲代码

你的鼓励是前进的动力,有求必答

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值