Java程序设计:定义MyRectangle2D类,包含: •两个名为x和y的double型数据域
Java程序设计:定义MyRectangle2D类,包含:•两个名为x和y的double型数据域,表明矩形的中心点,这两个数据域都带有get和set方法(假设...
Java程序设计:定义MyRectangle2D类,包含:
•两个名为x和y的double型数据域,表明矩形的中心点,这两个数据域都带有get和set方法(假设这个矩形的边与x轴和y轴轴平行)………详情如图。第10.12题 展开
•两个名为x和y的double型数据域,表明矩形的中心点,这两个数据域都带有get和set方法(假设这个矩形的边与x轴和y轴轴平行)………详情如图。第10.12题 展开
1个回答
展开全部
我的参考代码(代码写得不好请见谅,还有改进之处):
MyRectangle2D.java (添加了一个获取四个关键点的方法)
package com.test.test;
import java.util.HashMap;
import java.util.Map;
public class MyRectangle2D {
private int x; //矩形中心点x坐标
private int y; //矩形中心点y坐标
private double width; //矩形的水平长度
private double height; //矩形的垂直长度
/**
* 无参构造函数(默认构造中心点为(0,0),水平长度和垂直长度均为1的矩形)
*/
public MyRectangle2D(){
this.x = 0;
this.y = 0;
this.width = 1;
this.height = 1;
}
/**
* 有参构造函数
* @param x 矩形的中心点x坐标
* @param y 矩形的中心点y坐标
* @param width 矩形的水平长度
* @param height 矩形的垂直长度
*/
public MyRectangle2D(int x, int y, double width, double height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
/**
* 获得矩形的面积
* @return
*/
public double getAreac(){
return width * height;
}
/**
* 获得矩形的周长
* @return
*/
public double getPerimeter(){
return 2 * x + 2 * y;
}
/**
* 判断指定的点是否在矩形内
* @param x 指定的点的x坐标
* @param y 指定的点的y坐标
* @return 指定点在矩形内返回true,反之返回false
*/
public boolean contains(double x,double y){
if(x >= this.x - width / 2 && x <= this.x + width / 2){
if(y >= this.y - height / 2 && y <= this.y + height / 2){
return true;
}else{
return false;
}
}else{
return false;
}
}
/**
* 判断指定的矩形是否在该矩形内
* @param r 指定的矩形
* @return 若指定的矩形在该矩形内则返回true,反之返回false
*/
public boolean contains(MyRectangle2D r){
Map<String, Double> myPoints = r.getPoints();
double myXLeft = myPoints.get("xLeft");
double myXRight = myPoints.get("xRight");
double myYUp = myPoints.get("yUp");
double myYBottom = myPoints.get("yBottom");
if(contains(myXLeft, myYUp)){
if(contains(myXLeft, myYBottom)){
if(contains(myXRight, myYUp)){
if(contains(myXRight,myYBottom)){
return true;
}
}
}
}
return false;
}
/**
* 判断指定的矩形是否与该矩形重叠
* @param r 指定的矩形
* @return 若指定的矩形与该矩形重叠则返回true,反之返回false;
*/
public boolean overlaps(MyRectangle2D r){
if(contains(r)){
if(width == r.width && height == r.height){
return true;
}
}
return false;
}
/**
* 获得四个点:xLeft xRight yUp yBottom
* @return Map<String,Double> -> String: xLeft xRight yUp yBottom || Double:Value
*/
public Map<String,Double> getPoints(){
Map<String,Double> points = new HashMap<String,Double>();
points.put("xLeft", (this.x - width / 2));
points.put("xRight", (this.x + width / 2));
points.put("yUp", (this.y + height / 2));
points.put("yBottom", (this.y - height / 2));
return points;
}
/*
* 以下均为Get/Set方法
*/
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
if(width > 0){
this.width = width;
}else{
this.width = 1;
}
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
if(height > 0){
this.height = height;
}else{
this.height = 1;
}
}
}
Test.java
package com.test.test;
public class Test {
public static void main(String[] args) {
MyRectangle2D r1 = new MyRectangle2D(2, 2, 5.5, 4.9);
System.out.println("r1的中心点x坐标为:" + r1.getX());
System.out.println("r1的中心点y坐标为:" + r1.getY());
System.out.println("r1的横向长度为:" + r1.getWidth());
System.out.println("r1的纵向长度为:" + r1.getHeight());
System.out.println("r1的面积:" + r1.getAreac());
System.out.println("r1的周长:" + r1.getPerimeter());
System.out.println("(3,3)是否在r1中:" + r1.contains(3, 3));
System.out.println("(4,5,10.5,3.2)是否在r1中:" + r1.contains(new MyRectangle2D(4, 5, 10.5, 3.2)));
System.out.println("(3, 5, 2.3, 5.4)是否与r1重叠:" + r1.overlaps(new MyRectangle2D(3, 5, 2.3, 5.4)));
}
}
控制台:
追问
有代码吗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询