命名App1.java
要求:
(1)按照题目所给变量名称、类型和方法名称进行编程,禁止修改;
(2)本题中所有内容写在源文件App1.java中。
(3)编程环境可选,Eclipse和JDK均可。
1、编写一个矩形类Rectangle,包含:
成员变量:
两个属性:矩形的宽width;矩形的高length。
两个构造器方法:
(1)一个带有两个参数的构造器方法,用于将width和length属性初化;
(2)一个不带参数的构造器,调用构造方法(1)将矩形初始化为宽和高都为10。
普通方法:
(1)设置getter和setter方法用于获取和设置类中length和width变量的值, set方法应该验证length和width都是大于0.0小于20.0的浮点数, 构造方法(一)调用setWidth()和setLength();
(2)求矩形面积的方法area()任何矩形的面积是它的长度乘以它的宽度
(3)求矩形周长的方法perimeter() 矩形的周长是(宽+高)x2
(4)包含一个判断矩形是否为正方形的谓词方法isSquare()
(5)void compare(Rectangle),用于比较两个对象是否相等。
2、通过main方法测试
(1)创建两个Rectangle对象rect1和rect2判断这两个对象是否相等。
rect1的 length和width 都为10。
Rect2的 length等于5和width 等于10。
(2)分别调用area()和perimeter ()输出两个对象。
(3)调用 isSquare()方法该方法检查那个矩形是否为方形
代码:
package 大二;
/**
* @author Hasee
*
*/
class Rectangle{
private double width;
private double length;
// 构造方法一
public Rectangle(double width, double length) {
this.width = width;
this.length = length;
}
// 构造方法二
public Rectangle() {
this(10,10);
}
//普通方法
//1.1宽
public double getWidth() {
return width;
}
public void setWidth(int width) {
if (width>=20.0||width<=0.0) {
throw new IllegalArgumentException("width的值应该大于0.0小于20.0");
}
this.width = width;
}
//1.2长
public double getLength() {
return length;
}
public void setLength(int length) {
if (length>20.0||length<0.0) {
throw new IllegalArgumentException("length的值应该大于0.0小于20.0");
}
this.length = length;
}
//2.矩形的面积
public double area() {
return width*length;
}
//3.矩形的周长
public double perimeter() {
return 2*(width+length);
}
//4.判断矩形是否为正方形
public void isSquare() {
if (this.length==this.width)System.out.println("是正方形");
else System.out.println("不是正方形");
}
//5.比较两个对象是否相等
public void campare(Rectangle rect) {
if (this.width==rect.width&&this.length==rect.length)System.out.println("两个对象相等");
else System.out.println("两个对象不相等");
}
/*
//重写哈希地址
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(length);
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits(width);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
//重写对象地址,使其相等
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rectangle other = (Rectangle) obj;
if (Double.doubleToLongBits(length) != Double.doubleToLongBits(other.length))
return false;
if (Double.doubleToLongBits(width) != Double.doubleToLongBits(other.width))
return false;
return true;
}
*/
//将地址转化成字符串
@Override
public String toString() {
return "App2 [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
+ "]";
}
}
public class App1 {
public static void main(String[] args) {
Rectangle rect1 = new Rectangle(10,10);
Rectangle rect2 = new Rectangle(10,5);
System.out.print("rect1的面积为:"+rect1.area()+" ,周长为:"+rect1.perimeter()+" rect1");
rect1.isSquare();
System.out.print("rect2的面积为:"+rect2.area()+" ,周长为:"+rect2.perimeter()+" rect2");
rect2.isSquare();
rect1.campare(rect2);
}
}
运行结果如下: