问一个java编程问题:定义一个矩形类(Rectangle)

定义一个矩形类(Rectangle)用来表示矩形,要求:
提供可以改变矩形坐标位置的方法;
提供可以改变矩形宽高的方法;
提供求矩形面积的方法;
提供计算一个点是否在矩形内的方法.

public class Rectangle {
// top, left 左上角那个顶点的坐标
// width: 宽
// heigth: 长
private double top, left, width, height;

// 构造函数
public Rectangle(double top, double left, double width, double height) {
this.top = top;
this.left = left;
this.width = width;
this.height = height;
}

// 改变顶点坐标,即改变矩形坐标位置
public void location(double top, double left) {
this.top = top;
this.left = left;
}

// 改变宽,高,即改变矩形宽高
public void size(double width, double height) {
this.width = width;
this.height = height;
}

// 计算面积,宽×高
public double area() {
return width * height;
}

// 判断某点是否在矩形内
public boolean isInside(double x, double y) {
// 这里采用的是数学上的坐标系,即向上向右为正
// 如果采用向下向右为正的话,则要改
// return x > this.left && x < this.left + this.width && y < this.top +
// this.height && y > this.top;
// 这里点不包括在边上,如果在边上也算的话,把小于号或大于号改成小于等于及大于等于
return x > this.left && x < this.left + this.width
&& y > this.top - this.height && y < this.top;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-11
说明 有两个类Rectangle 和Point
=======
package rectangle;

public class Rectangle {

//确定一个矩形 至少需要3个点,假设一个矩形按逆时针的方向点为A、B、C、D取A、B、C3点
Point pointA;
Point pointB;
Point pointC;

public Point getPointA() {
return pointA;
}

public void setPointA(Point pointA) {
this.pointA = pointA;
}

public Point getPointB() {
return pointB;
}

public void setPointB(Point pointB) {
this.pointB = pointB;
}

public Point getPointC() {
return pointC;
}

public void setPointC(Point pointC) {
this.pointC = pointC;
}

/*
* 要求1: 提供可以改变矩形坐标位置的方法; 即移动一个矩形 矩形3点都会变化
* 要求2: 提供可以改变矩形宽高的方法; 移动矩形3点中的一点
* 要求3: 提供求矩形面积的方法; 求点距 并做乘法
* 要求4: 提供计算一个点是否在矩形内的方法. 如果矩形的的长宽为平行或垂直于XY 轴将极大的方便这一过程
*
* 思路若矩形的长宽为平行或垂直于X Y轴 非常有利于此问题的解决
* 先解决此种特殊情况
* 在考虑 X Y轴沿坐标原点选择对3点的坐标的实践表换过程
*/

//移动矩形
public void moveRectangle(int mx,int my){
//沿X轴正向移动为正数,反之负数
//沿Y轴正向移动为正数,反之负数
this.pointA.move(mx, my);
this.pointB.move(mx, my);
this.pointC.move(mx, my);
}

public void changeWidth(double distance){
//逆时针旋转坐标到x轴与B C两点的连线平行 并返回新坐标
Point pointAA=Point.turnTheCenterPoint(pointA, pointB, pointC);
Point pointBB=Point.turnTheCenterPoint(pointC, pointB, pointC);
Point pointCC=Point.turnTheCenterPoint(pointC, pointB, pointC);
//此时在新坐标系下 AB边与X轴锤子 BC边与X轴平行
//假定AB边为需要改变的宽 移动的点为A点 网上为增加整数 往下为减 负数
pointAA.setY(pointAA.getY()+distance);
//改变的只有A点 只需要将A点变回原坐标系下的点 也就是顺时针再转回坐标系
//鉴于你一分都不给 我就不写了 自己弄去吧
//反转坐标系 获取A的新坐标
}

//求面积
public double getMianJi(int mx,int my){
return Point.getDistance(pointA, pointB)*Point.getDistance(pointB, pointC);
}

//判断矩形框中是不是有某个点 假定矩形有一边平行于X轴
public boolean hasPoint(Point p){
//逆时针旋转坐标到x轴与B C两点的连线平行 并返回新坐标
Point pointAA=Point.turnTheCenterPoint(pointA, pointB, pointC);
Point pointCC=Point.turnTheCenterPoint(pointC, pointB, pointC);
Point pp=Point.turnTheCenterPoint(p, pointB, pointC);
if(pointAA.getX()<=pp.getX()&&pointCC.getX()>=pp.getX()&&pointAA.getY()>=pp.getY()&&pointCC.getY()<=pp.getY()){
return true;
}else{
return false;
}
}

}

===============
package rectangle;
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 void move(double mx,double my){
x+=mx;
y+=my;
}
//求两点点距
public static double getDistance(Point a,Point b){
return Math.sqrt(Math.pow(a.getX()-b.getX(), 2)+Math.pow(a.getY()-b.getY(), 2));
}

/*
*逆时针转动坐标原点,转到X轴于矩形的BC平行
*需要转动的角度A tan$=(pointB.y-pointC.y)/(pointA.x-pointC.x)
*
*转动后所有点和X轴的夹角都减小了$度
*返回转到后的新点(新坐标)
*/
public static Point turnTheCenterPoint(Point pointA,Point pointB,Point pointC){
double a=Math.atan(pointA.getY()/pointA.getX());
double b=Math.atan((pointB.getY()-pointC.getY())/(pointA.getX()-pointC.getX()));
double xx=Math.sin(a-b);
double newPointX=xx*Math.sqrt((Math.pow(pointA.getX(), 2)+Math.pow(pointA.getY(), 2)));
double yy=Math.cos(a-b);
double newPointY=yy*Math.sqrt((Math.pow(pointA.getX(), 2)+Math.pow(pointA.getY(), 2)));
Point point=new Point();
point.setX(newPointX);
point.setY(newPointY);
return point;
}
}
第2个回答  2008-09-11
package s;

public class Rectangle {

/**
* @param args
*/
private int lx;//左上横坐标

private int ly;//左上纵坐标

private int rx;//右上下横坐标

private int ry;//右下纵坐标

public int getLx() {
return lx;
}

public void setLx(int lx) {
this.lx = lx;
}

public int getLy() {
return ly;
}

public void setLy(int ly) {
this.ly = ly;
}

public int getRx() {
return rx;
}

public void setRx(int rx) {
this.rx = rx;
}

public int getRy() {
return ry;
}

public void setRy(int ry) {
this.ry = ry;
}

public void setLeft(int x,int y){
this.setLx(x);
this.setLy(y);
}

public void setRight(int x,int y){
this.setRx(x);
this.setRy(y);
}

//判断长和宽
public boolean isBool(){
return Math.abs(this.getRx()-this.getLx())>=Math.abs(this.getRy()-this.getLy());
}

}

问一个java编程问题:定义一个矩形类(Rectangle)
public class Rectangle { \/\/ top, left 左上角那个顶点的坐标 \/\/ width: 宽 \/\/ heigth: 长 private double top, left, width, height;\/\/ 构造函数 public Rectangle(double top, double left, double width, double height) { this.top = top;this.left = left;this.width = width;this....

定义一个类rectangle,描述一个矩形,包含有长、宽两种属性,以及计算面积...
class Rect{private int _len;private int _width;public Rect(int len,int width){this._len = len;this._width = width;}\/\/定义面积只读属性 public int Area{Get{return _lenth * _width。

java编写程序创建一个矩形类Rectangle
所有的程序都是从MAIN方法开始一步一步往下运行,你看程序下面都是输出了。你这样看看 public static class TestRectangle{ public static void main (String args[]){ Rectangle r1=new Rectangle(5.6,12.5);Rectangle r2=new Rectangle(2,3);} class Rectangle{ double width;double height;Rectang...

定义一个矩形类Rectangle,数据成员(矩形长,宽),成员函数(给长宽赋值...
Rectangle.setRectangle(m ,n );cout<<Rectangle.girth();cout<<Rectangle.area();}

定义一个矩形类Rectangle,有长(len)、宽(width)两个属性,有成员函数计 ...
{ this.len = len;} public double getWidth() { return width;} public void setWidth(double width) { this.width = width;} public static void main(String[] args) { Rectangle r = new Rectangle(40, 10);System.out.println(r.getArea(r.getLen(), r.getWidth()));} } ...

.编写一个名为Rectangle的JAVA类来表示矩形
public class Rectangle { double width;double height;string color;public void setWidth(double width) { this.width = width;} public void setHeight(double height) { this.height = height;} public void setColor() { this.color = color;} public double getWidth() { return width;} pu...

java编程题
Rectangle类:\/** * 定义一个矩形类Rectangle,包含有长length,宽width属性、构造方法(要求写出初始化长和宽)和计算面积方法getArea()。 * 编写一个长方体Cuboid * ,继承自矩形类,具有长length、宽width、高height属性,构造方法和计算体积的方法getVolume()。编写一个测试类Test * (其中长为5...

Java编写一个矩形类,并计算面积和周长?
class Rectangle{ private int width = 2;private int length = 1;public int getWidth(){ return this.width;} public void setWidth(int w){ this.width = w;} public int getLength(){ return this.length;} public void setLength(int l){ this.length = l;} public int getArea(){ ...

java 定义一个矩形类,有长、宽2个属性,有成员函数计算矩形的面积。
public static void main(String[] args) { \/\/ TODO Auto-generated method stub Rectangle R=new Rectangle(10,10);System.out.println("面积为:"+R.Area());} } class Rectangle{ public double width;public double height;Rectangle(){ width=0;height=0;} Rectangle(double w,double h){...

java作业 设计一个名为rectangle的类
package com.jihe;public class Rectangle {private double width = 1.0;private double height = 1.0;Rectangle() {}Rectangle(double width, double height) {this.width = width;this.height = height;}public double getPerimeter() {return 2 * (width + height);}public double getArea() ...

相似回答