java 圆类 testcircle_吉软-java-第六次作业

1.编写一个点类Point

package org.jsoft.Point;

public class Point {

int x;

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;

}

int y;

public Point(int x,int y){

this.x=x;

this.y=y;

}

public void display(){

System.out.println("The point is at:("+getX()+","+getY()+")");

}

}

测试类:

package org.jsoft.Point;

public class TestPoint {

public static void main(String[] args) {

Point p=new Point(0,0);

p.setX(100);

p.setY(42);

p.display();

}

}

结果:The point is at:(100,42)

2.编写一个矩形类Rectangle

package org.jsoft.Rectangle;

import org.jsoft.Point.Point;

public class Rectangle {

Point point;

public Point getPoint() {

return point;

}

public void setPoint(Point point) {

this.point = point;

}

public void setPoint(int x,int y) {

point=new Point(1,1);

point.setX(x);

point.setY(y);

}

public int getWidth() {

return width;

}

public void setWidth(int width) {

this.width = width;

}

public int getHeight() {

return height;

}

public void setHeight(int height) {

this.height = height;

}

int width;

int height;

public Rectangle(Point p,int width,int height){

this.point=p;

this.width=width;

this.height=height;

}

public Rectangle(int x,int y,int width,int height){

point=new Point(0,0);

point.setX(x);

point.setY(y);

this.width=width;

this.height=height;

}

public Rectangle(Rectangle r){

this.width=r.width;

this.height=r.height;

}

public Rectangle(){}

public int getArea(){

return width*height;

}

public void display(){

System.out.println("The rectangle's width and height is:"+getWidth()+","+getHeight());

}

}

测试类:

package org.jsoft.Rectangle;

import org.jsoft.Point.Point;

public class TestRectangle {

public static void main(String[] args){

Rectangle r1=new Rectangle(1,1,50,67);

int area=r1.getArea();

System.out.println("The Rectangle's area:"+area);

r1.display();

Point p1=new Point(1,1);

Rectangle r2=new Rectangle(p1,60,67);

System.out.println("The Rectangle's area:"+r2.getArea());

r2.display();

Rectangle r3=new Rectangle();

r3.width=70;

r3.height=67;

System.out.println("The Rectangle's area:"+r3.getArea());

r3.display();

Rectangle r4=new Rectangle(r3);

System.out.println("The Rectangle's area:"+r4.getArea());

r4.display();

Rectangle r5=new Rectangle();

r5.setPoint(100,100);

System.out.println("("+r5.point.getX()+","+r5.point.getY()+")");

}

}

结果:

The Rectangle's area:3350

The rectangle's width and height is:50,67

The Rectangle's area:4020

The rectangle's width and height is:60,67

The Rectangle's area:4690

The rectangle's width and height is:70,67

The Rectangle's area:4690

The rectangle's width and height is:70,67

(100,100)

3.编写一个圆类Circle

package org.jsoft.Circle;

import org.jsoft.Point.Point;

import org.jsoft.Rectangle.Rectangle;

public class Circle {

Point p;//圆心

float radius;//半径

public Point getP() {

return p;

}

public void setP(Point p) {

this.p = p;

}

public void setP(int x,int y){

p=new Point(0,0);

p.setX(x);

p.setY(y);

}

public float getRadius() {

return radius;

}

public void setRadius(float radius) {

this.radius = radius;

}

public Circle(){}//写了带参数的构造方法不能马上知道方法里面该写什么

public Circle(Point p,float r){

this.p=p;

this.radius=r;

}

public Circle(int x,int y,float r){

p=new Point(0,0);

p.setX(x);

p.setY(y);

this.radius=r;

}

public Circle(Circle c){

this.p=c.p;

this.radius=c.radius;

}

public boolean isInside(Point p){//两点间的距离公式判断在不在圆内

double result=(double)Math.sqrt((p.getX()-this.p.getX())*(p.getX()-this.p.getX())+(p.getY()-this.p.getY())*(p.getY()-this.p.getY()));

if(result

return true;

else

return false;

}

public Circle outerRect(Rectangle r){//返回一个矩形的外接圆,矩形平行于x轴

Point p=new Point(0,0);

p=r.getPoint();

Circle c=new Circle();

p.setX(r.getWidth()/2+p.getX());

p.setY(r.getHeight()/2+p.getY());

c.radius=(float)Math.sqrt(r.getHeight()*r.getHeight()+r.getWidth()*r.getWidth())/2;

c.setP(p);

return c;

}

public Circle join(Circle c1, Circle c2){//返回两个参数圆的最小外接圆,应为外切圆,两个圆x坐标相同

float f=distance(c1,c2);

Circle c=new Circle();

Point p1=new Point(0,0);

Point p2=new Point(0,0);

p1=c1.getP();

p2=c2.getP();

c.radius=(f-c1.radius-c2.radius)/2;

if(p1.getX()

c.setP((p2.getX()-(int)(c2.radius+c.radius)), p2.getY());

}

else{

c.setP((p1.getX()-(int)(c1.radius+c.radius)), p1.getY());

}

return c;

}

public float distance(Circle c1, Circle c2){ //返回两个参数圆圆心之间的距离

float d;

d=(float)Math.sqrt((c1.p.getX()-c2.p.getX())*(c1.p.getX()-c2.p.getX())+(c1.p.getY()-c2.p.getY())*(c1.p.getY()-c2.p.getY()));

return d;

}

public String toString(){

return "("+p.getX()+","+p.getY()+","+radius+")";

}

}

测试类:

package org.jsoft.Circle;

import java.util.Scanner;

import org.jsoft.Point.Point;

import org.jsoft.Rectangle.Rectangle;

public class TestCircle {

public static void main(String[] args) {

Circle c=new Circle();

Scanner sc=new Scanner(System.in);

while(true){

System.out.print("请输入命令:(isInside/outerRect/join/distance/quit):");

String str=sc.next();

if(str.equals("isInside")){

Point p=new Point(0,0);

System.out.print("请指定圆心的x坐标:");

int x=sc.nextInt();

System.out.print("请指定圆心y的坐标:");

int y=sc.nextInt();

c.setP(x, y);

System.out.print("请指定半径的长度:");

c.radius=sc.nextFloat();

System.out.print("请输入测试点的x坐标:");

p.setX(sc.nextInt());

System.out.print("请输入测试点y的坐标:");

p.setY(sc.nextInt());

if(c.isInside(p)){

System.out.println("isInside的结果为:测试点("+p.getX()+","+p.getY()+")在你所指定的圆("+c.p.getX()+","+c.p.getY()+","+c.radius+")内");

}

else{

System.out.println("isInside的结果为:测试点("+p.getX()+","+p.getY()+")不在你所指定的圆("+c.p.getX()+","+c.p.getY()+","+c.radius+")内");

}

}

else if(str.equals("outerRect")){

Rectangle r=new Rectangle();

Circle c1=new Circle();

System.out.print("请指定矩形的左下角点的x坐标:");

int x=sc.nextInt();

System.out.print("请指定矩形左下角点的y坐标:");

int y=sc.nextInt();

r.setPoint(x, y);

System.out.print("请指定矩形的宽:");

r.setWidth(sc.nextInt());

System.out.print("请指定矩形的高:");

r.setHeight(sc.nextInt());

c1=c.outerRect(r);

System.out.println("outerRect的结果为:矩形("+x+","+y+","+r.getWidth()+","+r.getHeight()+")的外接圆为:("+c1.p.getX()+","+c1.p.getY()+","+c1.radius+")");

}

else if(str.equals("join")){

Circle c1=new Circle();

Circle c2=new Circle();

Circle c3=new Circle();

System.out.print("请指定第一个圆的圆心x坐标:");

int x1=sc.nextInt();

System.out.print("请指定第一个圆的圆心y坐标:");

int y1=sc.nextInt();

c1.setP(x1, y1);

System.out.print("请指定第一个圆的半径:");

c1.radius=sc.nextFloat();

System.out.print("请指定第二个圆的圆心x坐标:");

int x2=sc.nextInt();

System.out.print("请指定第二个圆的圆心y坐标:");

int y2=sc.nextInt();

c2.setP(x2, y2);

System.out.print("请指定第二个圆的半径:");

c2.radius=sc.nextFloat();

c3=c.join(c1, c2);

System.out.println("join的结果为:两个圆的最小外切圆为:("+c3.p.getX()+","+c3.p.getY()+","+c3.radius+")");

}

else if(str.equals("distance")){

Circle c1=new Circle();

Circle c2=new Circle();

System.out.print("请指定第一个圆的圆心x坐标:");

int x1=sc.nextInt();

System.out.print("请指定第一个圆的圆心y坐标:");

int y1=sc.nextInt();

c1.setP(x1, y1);

System.out.print("请指定第二个圆的圆心x坐标:");

int x2=sc.nextInt();

System.out.print("请指定第二个圆的圆心y坐标:");

int y2=sc.nextInt();

c2.setP(x2, y2);

float d=c.distance(c1, c2);

System.out.println("两个圆圆心之间的距离为:"+d);

}

else if(str.equals("quit")){

System.out.println("程序结束");

break;

}

else{

System.out.println("对不起,你输入的指令有误,请重新输入!");

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值