java作业有会的吗?

如题所述

前边两位的回答,一个写的是接口,一个是copy的,并不符合题目要求。

可以参照我给出的代码,包名你自己修改就好

Shape抽象类

package fun.zzzz.question1891242999717450068;
public abstract class Shape {
    public abstract Double getArea();
    public abstract Double getPerimeter();
}

矩形子类

package fun.zzzz.question1891242999717450068;

public class Rectganle extends Shape {
    private double width;
    private double height;

    public Rectganle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public Double getArea() {
        return width * height;
    }

    @Override
    public Double getPerimeter() {
        return (width + height) * 2;
    }

    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    public double getHeight() {
        return height;
    }

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

}

圆形子类

package fun.zzzz.question1891242999717450068;

public class Square extends Shape {
    private double radius;

    public Square(double radius) {
        this.radius = radius;
    }

    @Override
    public Double getArea() {

        return radius * radius * Math.PI;
    }

    @Override
    public Double getPerimeter() {
        return radius * 2 * Math.PI;
    }

    public double getRadius() {
        return radius;
    }

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

运行类

import fun.zzzz.question1891242999717450068.Rectganle;
import fun.zzzz.question1891242999717450068.Shape;
import fun.zzzz.question1891242999717450068.Square;

public class App {
    public static void main(String[] args) throws Exception {
        Shape shape;
        System.out.println("随机生成十个矩形");
        for(int i = 0 ; i <10;i++){
            double width = Math.random()*100;
            double height = Math.random()*100;

        shape = new Rectganle(width, height);
        System.out.printf("随机生成矩形,长为:%f ,宽为 %f,",width,height);
        System.out.printf("生成的矩形周长为:%f,",shape.getPerimeter());
        System.out.printf("生成的矩形面积为:%f\n",shape.getArea());
        }
        System.out.println("随机生成十个圆形");
        for(int i = 0 ; i <10;i++){
            double radius = Math.random()*100;
        shape = new Square(radius);
        System.out.printf("随机生成圆形,半径为:%f,",radius);
        System.out.printf("生成的圆形周长为:%f,",shape.getPerimeter());
        System.out.printf("生成的圆形面积为:%f\n",shape.getArea());
        }
    }
}

执行结果:

随机生成十个矩形

随机生成矩形,长为:82.397394 ,宽为 15.780623,生成的矩形周长为:196.356034,生成的矩形面积为:1300.282215

随机生成矩形,长为:10.089751 ,宽为 35.217445,生成的矩形周长为:90.614391,生成的矩形面积为:355.335237

随机生成矩形,长为:5.924129 ,宽为 55.586151,生成的矩形周长为:123.020560,生成的矩形面积为:329.299548

随机生成矩形,长为:12.290828 ,宽为 62.751590,生成的矩形周长为:150.084836,生成的矩形面积为:771.268991

随机生成矩形,长为:33.461044 ,宽为 40.357500,生成的矩形周长为:147.637088,生成的矩形面积为:1350.404089

随机生成矩形,长为:93.437272 ,宽为 94.864567,生成的矩形周长为:376.603678,生成的矩形面积为:8863.886332

随机生成矩形,长为:2.055191 ,宽为 80.151781,生成的矩形周长为:164.413945,生成的矩形面积为:164.727231

随机生成矩形,长为:41.597097 ,宽为 44.792624,生成的矩形周长为:172.779443,生成的矩形面积为:1863.243145

随机生成矩形,长为:16.218872 ,宽为 86.742154,生成的矩形周长为:205.922053,生成的矩形面积为:1406.859888

随机生成矩形,长为:35.856816 ,宽为 56.284192,生成的矩形周长为:184.282017,生成的矩形面积为:2018.171950

随机生成十个圆形

随机生成园形,半径为:47.565306,生成的园形周长为:298.861630,生成的圆形面积为:7107.722402

随机生成园形,半径为:71.443149,生成的园形周长为:448.890545,生成的圆形面积为:16035.077069

随机生成园形,半径为:69.601039,生成的园形周长为:437.316229,生成的圆形面积为:15218.832047

随机生成园形,半径为:12.479495,生成的园形周长为:78.410977,生成的圆形面积为:489.264678

随机生成园形,半径为:17.737563,生成的园形周长为:111.448392,生成的圆形面积为:988.411411

随机生成园形,半径为:19.439864,生成的园形周长为:122.144268,生成的圆形面积为:1187.233982

随机生成园形,半径为:56.549736,生成的园形周长为:355.312470,生成的圆形面积为:10046.413179

随机生成园形,半径为:93.963997,生成的园形周长为:590.393208,生成的圆形面积为:27737.852978

随机生成园形,半径为:29.599591,生成的园形周长为:185.979713,生成的圆形面积为:2752.461676

随机生成园形,半径为:82.665072,生成的园形周长为:519.399967,生成的圆形面积为:21468.117883

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-09-04

你好,这道题主要考察的是抽象类以及类继承的知识点,我采用的是循环十次+随机数生成的方式实现十次矩形、正方形的生成的,并在其中添加了手动输入图形名称的步骤,具体解答如下:


shape抽象类:

package test.zhidao;
public abstract class Shape {
private String Name;
//计算面积的抽象方法
public abstract double getArea();
//计算周长的抽象方法
public abstract double getPerimeter();
}


Rectangle类:

package test.zhidao;

public class Rectangle extends  Shape{
//定义
private String name;
//定义矩形的长度
private double length;
//定义矩形的宽度
private double width;
//定义矩形的带参构造方法
public Rectangle(String name, double length, double width) {
this.name = name;
this.length = length;
this.width = width;
}

public String getName() {
return name;
}
//重写Shape类的计算面积方法
@Override
public double  getArea() {
return this.length*this.width;    }
//重写Shape类的计算周长方法
@Override
public double getPerimeter() {
return (this.length+this.width)*2;
}
}



Square类:

package test.zhidao;

public class Square extends Shape {
//定义正方形的名字
private String name;
//定义正方形的边长
private double leng;
//定义正方形的带参构造方法
public Square(String name, double leng) {
this.name = name;
this.leng = leng;
}
//定义正方形的getname方法
public String getName() {
return name;
}

@Override
public double getArea() {
return this.leng*this.leng;
}

@Override
public double getPerimeter() {
return this.leng*4;
}
}



测试类:

package test.zhidao;

import java.util.Scanner;

public class TestShape {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);

for (int i = 1; i < 11; i++) {
System.out.println("请输入第"+i+"个矩形的名字");
String name = sc.next();
double length = Math.random()*10;
double width = Math.random()*10;
Rectangle rectangle = new Rectangle(name, length, width);
System.out.println("随机生成的第"+i+"个矩形的"+ rectangle.getName()+"的面积为:"+rectangle.getArea()+",周长为:"+rectangle.getPerimeter());
}
for (int i = 1; i < 11; i++) {
System.out.println("请输入第"+i+"个正方形的名字");
String name = sc.next();
double leng = Math.random()*10;
Square square = new Square(name, leng);
System.out.println("随机生成的第"+i+"个正方形的"+ square.getName()+"的面积为:"+square.getArea()+",周长为:"+square.getPerimeter());
}
}
}



运行结果:

请输入第1个矩形的名字

矩形一

随机生成的第1个矩形的矩形一的面积为:43.7478926202824,周长为:26.48400766292434

请输入第2个矩形的名字

矩形二

随机生成的第2个矩形的矩形二的面积为:6.301995322678404,周长为:17.03319286521507

请输入第3个矩形的名字

矩形三

随机生成的第3个矩形的矩形三的面积为:19.37188109109774,周长为:19.35770616656682

请输入第4个矩形的名字

矩形四

随机生成的第4个矩形的矩形四的面积为:35.43705852708208,周长为:23.967526863742894

请输入第5个矩形的名字

矩形五

随机生成的第5个矩形的矩形五的面积为:0.7122395060057232,周长为:5.6983205978531615

请输入第6个矩形的名字

矩形六

随机生成的第6个矩形的矩形六的面积为:7.309838894830315,周长为:16.81952976725822

请输入第7个矩形的名字

矩形七

随机生成的第7个矩形的矩形七的面积为:33.553854912510204,周长为:23.170769419893915

请输入第8个矩形的名字

矩形八

随机生成的第8个矩形的矩形八的面积为:82.62776830474499,周长为:36.37101881942749

请输入第9个矩形的名字

矩形九

随机生成的第9个矩形的矩形九的面积为:0.613385659192319,周长为:3.1414490753032953

请输入第10个矩形的名字

矩形十

随机生成的第10个矩形的矩形十的面积为:20.486415085949194,周长为:20.40069577524958

请输入第1个正方形的名字

正方形一

随机生成的第1个正方形的正方形一的面积为:0.5105427228115965,周长为:2.8580908951580852

请输入第2个正方形的名字

正方形二

随机生成的第2个正方形的正方形二的面积为:0.5056417111537779,周长为:2.8443395329074983

请输入第3个正方形的名字

正方形三

随机生成的第3个正方形的正方形三的面积为:48.187924954968004,周长为:27.76700918859444

请输入第4个正方形的名字

正方形四

随机生成的第4个正方形的正方形四的面积为:84.07900117587658,周长为:36.677840978089556

请输入第5个正方形的名字

正方形五

随机生成的第5个正方形的正方形五的面积为:87.33972332017416,周长为:37.3822895650171

请输入第6个正方形的名字

正方形六

随机生成的第6个正方形的正方形六的面积为:39.3740789428637,周长为:25.099507227948106

请输入第7个正方形的名字

正方形七

随机生成的第7个正方形的正方形七的面积为:32.437470984629584,周长为:22.78156131071954

请输入第8个正方形的名字

正方形八

随机生成的第8个正方形的正方形八的面积为:22.86989454546044,周长为:19.12899141950163

请输入第9个正方形的名字

正方形九

随机生成的第9个正方形的正方形九的面积为:0.017976737794000858,周长为:0.5363094299972859

请输入第10个正方形的名字

正方形十

随机生成的第10个正方形的正方形十的面积为:0.02340555047122719,周长为:0.6119549064593199

第2个回答  2022-06-15
import java.util.Random;

public interface Sharp {

Double getArea();

Double getPerimeter();

static void main(String[] args) {
Random random = new Random(100);
double v = random.nextDouble();
for (int i = 0;i<10;i++){
Rectangle rectangle = new Rectangle(random.nextDouble() + 1, random.nextDouble() + 1);
System.out.println("矩形面积=" + rectangle.getArea());
System.out.println("矩形周长=" + rectangle.getPerimeter());

Square square = new Square(random.nextDouble() + 1);
System.out.println("圆形面积=" + square.getArea());
System.out.println("圆形周长=" + square.getPerimeter());
}
}
}

class Rectangle implements Sharp{

Double x;

Double y;

public Rectangle(Double x, Double y) {
this.x = x;
this.y = y;
}

@Override
public Double getArea() {
return x * y;
}

@Override
public Double getPerimeter() {
return 2 * (x + y);
}
}

class Square implements Sharp{

Double r;

final Double pai = 3.14;

public Square(Double r) {
this.r = r;
}

@Override
public Double getArea() {
return pai * r * r;
}

@Override
public Double getPerimeter() {
return 2 * pai * r;
}
}
第3个回答  2022-06-16
import java.util.Random;

public interface Sharp {

Double getArea();

Double getPerimeter();

static void main(String[] args) {
Random random = new Random(100);
double v = random.nextDouble();
for (int i = 0;i<10;i++){
Rectangle rectangle = new Rectangle(random.nextDouble() + 1, random.nextDouble() + 1);
System.out.println("矩形面积=" + rectangle.getArea());
System.out.println("矩形周长=" + rectangle.getPerimeter());

Square square = new Square(random.nextDouble() + 1);
System.out.println("圆形面积=" + square.getArea());
System.out.println("圆形周长=" + square.getPerimeter());
}
}
}

class Rectangle implements Sharp{

Double x;

Double y;

public Rectangle(Double x, Double y) {
this.x = x;
this.y = y;
}

@Override
public Double getArea() {
return x * y;
}

@Override
public Double getPerimeter() {
return 2 * (x + y);
}
}

class Square implements Sharp{

Double r;

final Double pai = 3.14;

public Square(Double r) {
this.r = r;
}

@Override
public Double getArea() {
return pai * r * r;
}

@Override
public Double getPerimeter() {
return 2 * pai * r;
}
}
相似回答