Chinaunix首页 | 论坛 | 博客
  • 博客访问: 111518
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类: Java

2012-05-07 17:45:26

1. 编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:Point.java,类:Point。

根据要求修改实验5第2题中定义的Point类。

(1) 去掉set方法。

(2) 添加如下构造方法:

public Point(); //将点的坐标值置为(0, 0)

public Point(intx,int y);

public Point(Point p);

(3) 添加以下成员方法:

public void move(intx, int y); //当前点移至指定位置

public double distance(Point p); // 计算当前点与参数点之间的距离

(4) 修改main方法的相关代码以进行相应的测试。主要测试构造方法和新添加的成员方法。

public class Point {

private int x,y;

public final static intEAST = 1; // 类的有名常量,用以表示的点移动方向

public final static intSOUTH =2;

public final static intWEST = 3;

public final static intNORTH =4;

//public void set(int x,int y){this.x=x;this.y=y;}

// 设置点的坐标值

public Point(){

this(0,0);

}// 将点的坐标值置为(0, 0)

public Point(int x,int y){

x=this.x;

y=this.y;

}

public Point(Point p){

this( p.x,p.y );

}

public void move(int x, inty){

this.x=x;this.y=y;

}// 当前点移至指定位置

public doubledistance(Point p){

returnMath.sqrt((this.x-0)*(this.x-0)+(this.y-0)*(this.y-0));

}// 计算当前点与参数点之间的距离

public void move(intorientation){

if(orientation==EAST)

x++;

if(orientation==SOUTH)

y--;

if(orientation==WEST)

x--;

if(orientation==NORTH)

y++;

}

// 按指定的方向将当前点移动1个像素

public double distance(intx, int y){

returnMath.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));

}

// 计算当前点与指定点之间的距离

public boolean equals(Pointp){

if(x==p.getX()&&y==p.getY())

return true;

else return false;

}

// 测试当前点与参数点p的坐标值是否相等

public int getX(){

return x;

}

// 返回当前点的X坐标

public int getY(){

return y;

}

// 返回当前点的Y坐标

public String toString(){

return"("+x+","+y+")";

}

// 以(x,y)格式返回当前点对象的字符串表示

public static void main(String args[]) {

Point o=new Point();

o.move(10,15);

System.out.println(o.toString());

o.move(EAST);

Point p=new Point();

p.move(5,6);

System.out.println("distance= " + o.distance(10,15));

System.out.println(o.equals(p));

System.out.println(o.toString());

}

}

2. 编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye6.java,类:Circle、TestCircle。

根据要求修改实验2第2题中定义的Circle类和TestCircle类。

(1) Circle类具有如下接口:

class Circle {

public Circle(); // 将当前圆的半径设置为1

public Circle(int r);

public Circle(Circle c); //用c的状态设置当前圆的状态

public double getArea(); // 计算圆的面积

public double getPerimeter(); // 计算圆的周长

public boolean equals(Circle c); // 测试当前圆与参数圆的面积是否相等

public int getRadius(); //返回圆的半径

public String toString(); // 以格式“圆(r)”返回当前圆的字符串表示

}

(2) 修改TestCircle以进行相应的测试。主要测试构造方法、equals方法和toString方法。

class Circle {

private int radius;

public Circle(){

this.radius=1;

}

public Circle(int r){

this.radius=r;

}

public Circle(Circle c){

this.radius=c.radius;

}

public double getArea(){

return Math.PI*radius*radius;

}

public double getPerimeter(){

return 2*radius*Math.PI;

}

public boolean equals(Circle c){

if(radius==c.radius) return true;

else return false;

}

public int getRadius(){

return radius;

}

public String toString(){

return "圆("+radius+")";

}

}

class TestCircle {

public static void main(String[] args) {

Circle c1 = new Circle();

Circle c2 = new Circle(3);

System.out.println("r1="+c1.getRadius());

System.out.println("a1="+c1.getArea()+",p1="+c1.getPerimeter());

System.out.println("r2="+c2.getRadius());

System.out.println("a2="+c2.getArea()+",p2="+c2.getPerimeter());

System.out.println("当前圆与参数圆的面积是否相等"+c1.equals(c2));

System.out.println("当前圆:"+c1.toString());

}

}

2. 编程序

本题需要创建和定义的源程序文件及类如下:

源程序文件:zuoye7.java,类:R_Circle、TestR_Circle。

利用实验6中的Point类和Circle类定义一个表示屏幕坐标系上的圆区域的R_Circle类。该类包含一个private的、Point型实例变量p,用于确定圆区域的圆心位置,和一个private的、Circle型实例变量c,用于确定圆区域的形状大小。类的软件接口如下:

class R_Circle {

public R_Circle(); // 构造方法,圆心位置(1, 1),圆半径为1

public R_Circle(Point p, Circle c); // 构造方法

public R_Circle(Circle c, Point p); // 构造方法

public R_Circle(int x, int y, int r ); // 构造方法,圆心位置(x, y),圆半径为r

public boolean equals(R_Circle rc); // 判断两个圆区域是否相等

public void move(int orientation); // 按指定的方向将当前圆区域移动1个像素

public Point getPoint(); // 返回当前圆区域的圆心位置

public int getRadius(); //返回当前圆区域的半径

public String toString(); // 以格式“圆区域(x, y, r)”返回当前圆区域的字符串表示

}

然后编写一个应用程序起始类TestR_Circle测试该类(两个类存放在同一个文件中)。

程序为:

class Point {

private int x;

private int y;

publicfinal static int EAST = 1;

publicfinal static int SOUTH =2;

publicfinal static int WEST = 3;

publicfinal static int NORTH =4;

publicPoint(){

this.x=0;

this.y=0;

}

public Point(int x,int y){

this.x=x;

this.y=y;

}

public Point(Point p){

this.x=p.x;

this.y=p.y;

}

public void move(int orientation){

switch(orientation){

case EAST:x++;break;

case SOUTH:y++;break;

case WEST:x--;break;

case NORTH:y--;break;

default:System.out.println("error");

}

}

public void move(int x, int y){

this.x=x;

this.y=y;

}

public double distance(Point p){

double z;

z=Math.sqrt(Math.pow((p.getX()-this.x),2)+Math.pow((p.getY()-this.y),2));

return z;

}

public double distance(int x, int y){

double d;

d=Math.sqrt(Math.pow((x-this.x),2)+Math.pow((y-this.y),2));

return d;

}

public boolean equals(Point p){

int a=p.getX();

int b=p.getY();

if(a==x&&b==y) return true;

else return false;

}

public int getX(){

return x;

}

publicint getY(){

return y;

}

publicString toString(){

return "("+x+","+y+")";

}

public static void main(String args[]){

Point o=new Point();

o.move(1,1);

Point p=new Point();

p.x=2;

p.y=2;

System.out.println("两点间的距离:"+o.distance(p));

System.out.println("当前点与参数点p的坐标值是否相等"+o.equals(p));

System.out.println("当前点:"+o.toString());

}

}

class Circle {

private int radius;

public Circle(){

this.radius=1;

}

public Circle(int r){

this.radius=r;

}

public Circle(Circle c){

this.radius=c.radius;

}

public double getArea(){

return Math.PI*radius*radius;

}

public double getPerimeter(){

return 2*radius*Math.PI;

}

public boolean equals(Circle c){

if(radius==c.radius) return true;

else return false;

}

public int getRadius(){

return radius;

}

public String toString(){

return "圆("+radius+")";

}

}

class TestCircle {

public static void main(String[] args) {

Circle c1 = new Circle();

Circle c2 = new Circle(3);

System.out.println("r1="+c1.getRadius());

System.out.println("a1="+c1.getArea()+",p1="+c1.getPerimeter());

System.out.println("r2="+c2.getRadius());

System.out.println("a2="+c2.getArea()+",p2="+c2.getPerimeter());

System.out.println("当前圆与参数圆的面积是否相等"+c1.equals(c2));

System.out.println("当前圆:"+c1.toString());

}

}

class R_Circle {

private Circle c;

private Point p;

publicR_Circle(){

p=new Point(1,1);

c=new Circle(1);

}

public R_Circle(Point p, Circle c){

this.p=new Point(p);

this.c=new Circle(c);

}

public R_Circle(Circle c, Point p){

this(p,c);

}

public R_Circle(int x, int y, int r){

this.p=new Point(x,y);

this.c=new Circle(r);

}

public boolean equals(R_Circle rc){

if(rc.c.equals(this.c)&rc.p.equals(this.p))return true;

else return false;

}

public void move(int orientation){

p.move(orientation);

}

public Point getPoint(){

return p;

}

public int getRadius(){

return c.getRadius();

}

public String toString(){

return "圆区域("+p.getX()+","+p.getY()+","+c.getRadius()+")";

}

}

class TestR_Circle{

public static void main(String[] args){

R_Circle a=new R_Circle();

R_Circle b=new R_Circle(3,3,2);

a.move(1);

System.out.println("判断两个圆区域是否相等:"+a.equals(b));

System.out.println("当前圆区域的圆心位置:"+a.getPoint());

System.out.println("当前圆区域的半径:"+a.getRadius());

System.out.println("以格式“圆区域(x, y, r)”返回当前圆区域的字符串"+a.toString());

}

}

阅读(392) | 评论(0) | 转发(0) |
0

上一篇:Java重点编程题

下一篇:计算机算术运算

给主人留下些什么吧!~~