7-3 jmu-Java-03面向对象基础-03-形状

PTA Java程序设计

7-3 jmu-Java-03面向对象基础-03-形状

懒人一键copy

1.定义长方形类与圆形类Circle

长方形类-类名:Rectangle,private属性:int width,length
圆形类-类名:Circle,private属性:int radius
编写构造函数:
带参构造函数:Rectangle(width, length),Circle(radius)
编写方法:
   public int getPerimeter(),求周长。
   public int getArea(),求面积。
toString方法,使用Eclipse自动生成。
注意:
  计算圆形的面积与周长,使用Math.PI。
  求周长和面积时,应先计算出其值(带小数位),然后强制转换为int再返回。

分析:

  • 定义长方形类Rectangle,且定义私有属性:int width,length,有参构造器Rectangle(width, length)
  • 定义长方形类Circle,且定义私有属性:int radius,有参构造器Circle(radius)
  • 在类中编写方法,并且生成toString()方法
class Rectangle {
    //长方形类
    private int width, length;
    //有参构造器
    public Rectangle(int width, int length) {
        this.width = width;
        this.length = length;
    }
    //toString()
    @Override
    public String toString() {
        return "Rectangle [" +
                "width=" + width +
                ", length=" + length +
                ']';
    }
    //创建周长方法
    public int getPerimeter() {
        return 2 * (width + length);
        //2*(长+宽)
    }
    //面积
    public int getArea() {
        return width * length;
    }
}

2.main方法

  • 输入2行长与宽,创建两个Rectangle对象放入相应的数组。
  • 输入2行半径,创建两个Circle对象放入相应的数组。
  • 输出1:上面2个数组中的所有对象的周长加总。
  • 输出2:上面2个数组中的所有对象的面积加总。
  • 最后需使用Arrays.deepToString分别输出上面建立的
    Rectangle数组与Circle数组

分析:

  • 定义长度为2的数组来获取对象,
  • 在循环中计算数组中所有对象的周长、面积各自的总和
  • deepToString是Java中Arrays类的一个方法,用于将多维数组转化为字符串表示。因为对象是以索引的方式存储在数组中,且对象内重写了toString方法故会变成二维数组,如果你直接使用toString方法,你将无法得到期望的输出。但是,如果你使用Arrays.deepToString(二维数组),你将得到一个清晰、结构化的字符串表示。
 Scanner sc = new Scanner(System.in);
        Rectangle[] rectangles = new Rectangle[2];
        //定义长度为2的数组
        Circle[] circles = new Circle[2];
        //定义长度为2的数组
        int Perimeter = 0, Area = 0;
        //定义周长和面积
    

3.利用for循环来获取输入的值并赋值给长方形对象

分析:

  • 将对象赋值给索引为i,上面2个数组中的所有对象的周长加总。
for (int i = 0; i < 2; i++) {
            //长方形的输入
            int width = sc.nextInt();
            int length = sc.nextInt();
            rectangles[i] = new Rectangle(width, length);
            //将对象赋值给索引为i
            Perimeter += rectangles[i].getPerimeter();
            //上面2个数组中的所有对象的周长加总。
            Area += rectangles[i].getArea();
             //上面2个数组中的所有对象的面积加总。
        }

4.利用for循环来获取输入的值并赋值给圆形对象

分析:

  • 将对象赋值给索引为i,上面2个数组中的所有对象的周长加总。
     for (int i = 0; i < 2; i++) {
            int r = sc.nextInt();
            circles[i] = new Circle(r);
            Perimeter += circles[i].getPerimeter();
             //上面2个数组中的所有对象的周长加总。
            Area += circles[i].getArea();
             //上面2个数组中的所有对象的面积加总。
        }

5.使用Arrays.deepToString()输出

分析:

  • 使用Arrays.deepToString()来进行输出,使用toString会输出地址值,而deepToString则不会。
  • 因为对象是以索引的方式存储在数组中,且对象内重写了toString方法故会变成二维数组
	    System.out.println(Perimeter);
        System.out.println(Area);
        System.out.println(Arrays.deepToString(rectangles));
        System.out.println(Arrays.deepToString(circles));	

懒人一键copy


import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Rectangle[] rectangles = new Rectangle[2];
        //定义长度为2的数组
        Circle[] circles = new Circle[2];
        //定义长度为2的数组
        int Perimeter = 0, Area = 0;
        //定义周长和面积
        for (int i = 0; i < 2; i++) {
            //长方形的输入
            int width = sc.nextInt();
            int length = sc.nextInt();
            rectangles[i] = new Rectangle(width, length);
            //将对象赋值给索引为i
            Perimeter += rectangles[i].getPerimeter();
            //上面2个数组中的所有对象的周长加总。
            Area += rectangles[i].getArea();
        }
        for (int i = 0; i < 2; i++) {
            int r = sc.nextInt();
            circles[i] = new Circle(r);
            Perimeter += circles[i].getPerimeter();
            Area += circles[i].getArea();
        }
        System.out.println(Perimeter);
        System.out.println(Area);
        System.out.println(Arrays.deepToString(rectangles));
        System.out.println(Arrays.deepToString(circles));
    }
}

class Rectangle {
    //长方形类
    private int width, length;

    //有参构造器
    public Rectangle(int width, int length) {
        this.width = width;
        this.length = length;
    }

    //toString()
    @Override
    public String toString() {
        return "Rectangle [" +
                "width=" + width +
                ", length=" + length +
                ']';
    }

    //创建周长方法
    public int getPerimeter() {
        return 2 * (width + length);
        //2*(长+宽)
    }

    //面积
    public int getArea() {
        return width * length;
    }
}

class Circle {
    //圆形类
    private int radius;

    //有参构造器
    public Circle(int radius) {
        this.radius = radius;
    }

    @Override
    public String toString() {
        return "Circle [" +
                "radius=" + radius +
                ']';
    }

    //圆形周长
    public int getPerimeter() {
        return (int) (2 * Math.PI * radius);
    }

    //圆形面积
    public int getArea() {
        return (int) (Math.PI * radius * radius);
    }
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值