Java语言程序设计实践题:设计点类point矩形类rect

博客主页:https://tomcat.blog.csdn.net
博主昵称:农民工老王
主要领域:Java、Linux、K8S
期待大家的关注💖点赞👍收藏⭐留言💬
家乡

在自考本科的学习过程中,需要完成实践课程的考核,以下是我完成的Java语言程序设计实践题。我遇到的题目很简单,不过也还是分享出来,也许有同学正需要。

题目

设计点类point:至少包含两个数据成员x,y,分别是点的横坐标和纵坐标。设计矩形类rect:至少包含两个point类的数据成员,代表矩形的对顶点。
要求:

  1. 编写构造函数,根据用户输入的数据对矩形进行初始化。
  2. 设计方法成员,输出矩形的周长。
  3. 设计方法成员,输出矩形的面积。
  4. 进行适当的错误控制。
  5. 编与测试程序,体现程序的功能。

答案

1 思路

完成这个题目只需要创建三个java文件,即点类Point.java,矩形类Rect.java,测试类。为了简化文件结构,我就将三个文件放在同一个包下,测试则是用普通类的main方法方法实现。
在本次实践中,为了确保用户输入的顶点能有效地构成一个矩形,而设计了判断和异常处理,以此实现有效的错误控制。

2 代码

Point类

package cn.wja;

public class Point {
    private double x;
    private double y;

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public String toString() {
        return "Point{" + "x=" + x + ", y=" + y + '}';
    }
}

Rect类

package cn.wja;

public class Rect {
    private Point a;
    private Point b;

    public Point getA() {
        return a;
    }

    public void setA(Point a) {
        this.a = a;
    }

    public Point getB() {
        return b;
    }

    public void setB(Point b) {
        this.b = b;
    }

    public Rect(Point a, Point b) {
        this.a = a;
        this.b = b;
    }

    @Override
    public String toString() {
        return "Rect{" + "a=" + a + ", b=" + b + '}';
    }

    private void check() {
        if ((a.getX() == b.getX()) || (a.getY() == b.getY())) {
            throw new ArithmeticException("不合法的顶点坐标。");
        }
    }

    public double getPerimeter() {
        check();
        return (Math.abs(a.getX() - b.getX()) + Math.abs(a.getY() - b.getY())) * 2;
    }

    public double getArea() {
        check();
        return Math.abs((a.getX() - b.getX()) * (a.getY() - b.getY()));
    }
}

测试类

package cn.wja;

public class MainTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个顶点的横坐标:");
        double ax = Double.parseDouble(scanner.nextLine());
        System.out.println("请输入第一个顶点的纵坐标:");
        double ay = Double.parseDouble(scanner.nextLine());
        System.out.println("请输入第二个顶点的横坐标:");
        double bx = Double.parseDouble(scanner.nextLine());
        System.out.println("请输入第而个顶点的纵坐标:");
        double by = Double.parseDouble(scanner.nextLine());


        Point a = new Point(ax, ay);
        Point b = new Point(bx, by);
        Rect rect = new Rect(a, b);
        System.out.println("当前测试的矩形为:" + rect);
        double perimeter = rect.getPerimeter();
        System.out.println("矩形的周长是:" + perimeter);
        double area = rect.getArea();
        System.out.println("矩形的面积是:" + area);
    }
}

3 测试用例

测试1:正常输入(1)
在这里插入图片描述
测试2:正常输入(2)
在这里插入图片描述

测试3:异常演示

在这里插入图片描述

4 实践心得

通过本次实践,我对java编程有了更深入的认识。在以下几方面得到了实践和锻炼:
1.实践了构造函数的编写,构造函数用来给类的成员声明初始化,是一种特殊的方法,它的方法名与类名相同,并且没有返回值,也不需要使用void关键字修饰,构造函数分为无参构造器(默认构造函数)和有参构造器(自定义构造函数),本文写的是有参构造器。
2.实践了面向对象的编程思想,对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。
3.实践了异常的创建与抛出,Java中的异常(Exception)是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流,能够及时有效地处理程序中的运行错误。本次实践中在检查用户输入的坐标是否能构成一个矩形时,设计了判断和异常抛出,是一种有效的错误控制。

相关下载

你也可以直接下载全套的java项目和实验报告:https://download.csdn.net/download/monarch91/86618832


如需转载,请注明本文的出处:农民工老王的CSDN博客https://blog.csdn.net/monarch91 。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

农民工老王

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值