package hj; public class Rect { double width; double height; double getArea() { return width*height; } } public class Lader { double above; //梯形的上底 double bottom; double height; double getArea() { return (above+bottom)*height/2; } } public class Example4_5 { public static void main(String args[]) { Rect ractangle = new Rect(); ractangle.width=109.87; ractangle.height=25.18; double area=ractangle.getArea(); System.out.println("矩形的面积:"+area); Lader lader=new Lader(); lader.above=10.798; lader.bottom=156.65; lader.height=18.12; area=lader.getArea(); System.out.println("梯形的面积:"+area); } }这个编程哪里有问题
时间: 2024-02-14 15:20:32 浏览: 32
这段代码在语法上没有问题,但是它存在一些设计上的问题。比如说:
1. 类名的拼写不规范,应该是Rectangle而不是Ractangle。
2. 我们应该使用封装来保护类的属性,而不是将属性声明为public,因为这样会破坏类的封装性,导致代码不够健壮。
3. 在Lader类中,above应该是上底,而不是下底。bottom应该是下底,而不是上底。
4. 在Example4_5类中,我们应该使用构造函数来初始化对象,而不是直接访问类的属性。
5. 我们应该在程序中添加注释来解释每个类、方法和变量的作用,以便于其他人理解我们的代码。
相关问题
#include<iostream> using namespace std; class Rectangle { public: double width; double height; double area() { return width*height; } }; int main() { Rectangle rect1; Rectangle *p; p->width=1.2; cin>>p->height; cout<<p->area(); }
这段代码存在一个问题,即指针p没有被初始化,所以无法访问它所指向的对象。应该先将p指向一个已经存在的Rectangle对象,例如:
```
Rectangle rect1;
Rectangle *p = &rect1;
p->width=1.2;
cin>>p->height;
cout<<p->area();
```
这样就能正确地计算并输出矩形的面积了。
Rect类和Lader类计算方法已经编辑好,以下程序哪里出现了问题package hj; public class Example4_5 { public static void main(String args[]) { Rect ractangle = new Rect(); int width,height; double width = 109.87; double height = 25.18; double area=ractangle.getArea(); System.out.println("矩形的面积:"+area); Lader lader=new Lader(); lader.above=10.798; lader.bottom=156.65; lader.height=18.12; area=lader.getArea(); System.out.println("梯形的面积:"+area); } }
在程序中出现了重复声明变量的错误,即在第 7 和 8 行已经声明了 width 和 height 变量,但是在第 9 和 10 行又重新声明了相同名称的变量,导致编译错误。应该将第 9 和 10 行改为赋值语句,如下所示:
```java
double width = 109.87;
double height = 25.18;
ractangle.width = width;
ractangle.height = height;
```
这样就可以正确地使用 Rect 类进行计算了。