web xiaobai 2024-04-02 23:16 采纳率: 50%
浏览 9
已结题

按要求写出Rectangle类的定义

按要求写出Rectangle类的定义

Rectangle类是以下结构:考试只需要填写该段代码!
class Rectangle{
....
}
注意:因为是单文件编译,Rectangle类不能定义成public,不能在class签名加public!按照上述结构定义。不用写主函数,只用写类的定义即可。建议使用String.format来对输出字符串进行格式化。

要求:

私有变量width和height,类型double用于存宽和高;
对变量width和height的set与get方法;
一个静态变量numberOfObjects,用于统计类创建的个数;
一个静态方法getNumberOfObjects,返回对象被创建的个数;
一个静态方法printNumberOfObjects打印对象被创建的个数(详见输入输出);
getArea方法,返回矩形的面积;
getPerimeter方法,返回矩形的周长;
重写(overwrite)toString方法,按照格式要求返回对象的信息(详见输入输出);
需要判断width或者height小于0的情况,并按照要求在toString方法中输出(详见输入输出)



// 类定义在这里!类定义的代码就是你的答案。

// 下面是测试代码,不用写在你的答案中!
public class Main {
    public static void main(String[] args) {
        double w, h;
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            w = scanner.nextDouble();
            h = scanner.nextDouble();
            Rectangle rectangle = new Rectangle(w, h);
            rectangle.setWidth(w);
            rectangle.setHeight(h);
            System.out.printf("Object %d Width=%f Height=%f Perimeter=%f Area=%f\n", Rectangle.getNumberOfObjects(),
                    rectangle.getWidth(), rectangle.getHeight(), rectangle.getPerimeter(), rectangle.getArea());
            System.out.println(rectangle.toString());
            Rectangle.printNumberOfObjects();
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    class Rectangle{
        private double width;
        private double height;
        private static int numberOfObjects = 0;
        
        public Rectangle(double width, double height){
            this.width = width;
            this.height = height;
            numberOfObjects++;
        }
        
        public double getWidth(){
            return width;
        }
        
        public void setWidth(double width){
            if(width > 0){
                this.width = width;
            } else {
                System.out.println("Invalid width!");
            }
        }
        
        public double getHeight(){
            return height;
        }
        
        public void setHeight(double height){
            if(height > 0){
                this.height = height;
            } else {
                System.out.println("Invalid height!");
            }
        }
        
        public static int getNumberOfObjects(){
            return numberOfObjects;
        }
        
        public static void printNumberOfObjects(){
            System.out.println("Number of objects created: " + numberOfObjects);
        }
        
        public double getArea(){
            return width * height;
        }
        
        public double getPerimeter(){
            return 2 * (width + height);
        }
        
        @Override
        public String toString(){
            if(width <= 0 || height <= 0){
                return String.format("Invalid rectangle: width=%.2f, height=%.2f", width, height);
            } else {
                return String.format("Rectangle: width=%.2f, height=%.2f", width, height);
            }
        }
    }
    

    修改后的代码中,为Rectangle类添加了私有变量widthheight,分别表示矩形的宽和高。并且为它们提供了set和get方法。还添加了一个静态变量numberOfObjects用于统计类创建的个数,并且提供了一个静态方法getNumberOfObjects用于返回对象被创建的个数,以及一个静态方法printNumberOfObjects用于打印对象被创建的个数。

    另外,在Rectangle类中,我们提供了getArea方法用于返回矩形的面积,getPerimeter方法用于返回矩形的周长,并且重写了toString方法,按照格式要求返回对象的信息。在toString方法中,我们还增加了对宽和高是否小于等于0的判断,如果条件满足则输出相应的提示信息。

    在测试代码中,我们可以通过Scanner获取用户输入的矩形的宽和高,并利用Rectangle类创建矩形对象。然后通过调用相应的方法获取矩形的宽、高、周长和面积等信息,并将结果格式化输出。最后调用printNumberOfObjects方法打印对象被创建的个数。

    解决方案如下:

    1. 定义Rectangle类,包括私有变量width和height,类型为double,用于存储矩形的宽和高。
    2. 提供set和get方法,用于操作width和height变量。
    3. 定义一个静态变量numberOfObjects,用于统计类创建的个数。
    4. 提供一个静态方法getNumberOfObjects,返回对象被创建的个数。
    5. 提供一个静态方法printNumberOfObjects,打印对象被创建的个数。
    6. 提供getArea方法,返回矩形的面积。
    7. 提供getPerimeter方法,返回矩形的周长。
    8. 重写toString方法,按照格式要求返回对象的信息,同时判断width或height小于0的情况,在toString方法中输出相应的提示信息。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 java代码写在记事本上后在cmd上运行时无报错但又没生成文件
  • ¥15 关于#python#的问题:在跑ldsc数据整理的时候一直抱这种错误,要么--out识别不了参数,要么--merge-alleles识别不了参数(操作系统-linux)
  • ¥15 PPOCRLabel
  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡