package java_1105;
public class Point {
private int x;
private int y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
public void setX(int x) {
this.x = x;
}
public int getX() {
return x;
}
public void setY(int y) {
this.y = y;
}
public int getY() {
return y;
}
public void display(){
System.out.println("The point is at"+"("+getX()+","+getY()+")");
}
}
//测试
package java_1105;
public class TextPoint {
public static void main(String[] args) {
Point p=new Point(100,42);
p.display();
p.setX(100);
p.setY(42);
p.display();
}
}
package java_1105;
public class Rectangle {
Point point;
int width;
int height;
public Rectangle(Point point, int wight, int height) {
}
public Rectangle(int x, int y, int width, int height) {
}
public Rectangle(Rectangle r) {
}
public Rectangle() {
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public int getWidth() {
return width;
}
public void setWight(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getArea() {
return width * height;
}
public void display() {
System.out.println("The rectangle's width and height is:" + width + ","
+ height);
}
}
//测试
package java_1105;
public class TextRectangle {
public static void main(String[] args) {
Rectangle r = new Rectangle();
r.setHeight(30);
r.setWight(20);
r.display();
r.getArea();
System.out.println("矩形的面积是" + r.getArea());
}
}
编写一个圆类Circle
要求:
1. 该类拥有两个属性:
1) Point p代表圆心
2) float radius代表半径
2. 构造方法
1) Circle()
2) Circle(Point p, float r)
3) Circle(int x, int y, float r) //x, y代表圆心的两个坐标
4) Circle(Circle c)
3. 普通方法
0) 一系列get/set方法:
getPoint(), setPoint(Point p), setPoint(int x, int y)
getRadius(), setRadius(float r)
1) public boolean isInside(Point p) //判断一个点是否在圆内
2) public Circle outerRect(Rectangle r) //返回一个矩形的外接圆
3) public Circle join(Circle c1, Circle c2) //返回两个参数圆的最小外接圆
4) public float distance(Circle c1, Circle c2) //返回两个参数圆圆心之间的距离
5) public String toString()
//返回本圆的基本信息,格式为(圆心x坐标值,圆心y坐标值,圆半径)。如:
(0, 0, 2)
4. 编写一个带main函数的测试类,测试Circle类
package java_1105;
public class Circle {
Point p;
float radius;
public Circle() {
}
public Circle(Point p, float r) {
this.p = p;
this.radius = r;
}
public Circle(int x, int y, float r) {
this.p.setX(x) ;
this.p.setY(y);
}
public Circle(Circle c) {
}
public Point getP() {
return p;
}
public void setP(Point p) {
this.p=p;
}
public float getRadius() {
return radius;
}
public void setRadius(float radius) {
this.radius = radius;
}
public boolean isInside(Point p) {// 判断一个点是否在圆内
int result = (int) Math.sqrt((p.getX() - this.p.getX()) + (p.getY() - this.p.getY()));
if (result <= radius) {
System.out.print("在圆内");
}
else {
System.out.print("在圆外");
}
return true;
}
public Circle outerRect(Rectangle r) {// 返回一个矩形的外接圆
int a=r.getPoint().getX();
int b=r.getPoint().getY();
int c=r.width/2;
int d=r.height/2;
int e=a+c;
int f=b+d;
float g=(float)Math.sqrt((c*c)+(d*d));
System.out.println("该矩形的外接圆为,圆心为:("+e+","+f+")"+"半径为:"+g);
Circle r1 = new Circle();
return r1;
}
public Circle join(Circle c1, Circle c2) {// 返回两个参数圆的最小外接圆
int a;
a=c1.getP().getX();
int b;
b=c2.getP().getX();
double c;
c=c1.getRadius();
double d;
d=c2.getRadius();
if(b-a==c+d){
System.out.println("这两个圆是互为外接圆的,可以继续向下判断");
int x;
x=this.getP().getX();
int y;
y=this.getP().getX();
float e;
e=(float)Math.sqrt(((x-a)*(x-a))+(y-b)*(y-b));
float f;
f=(float)Math.sqrt(((x-c)*(x-c))+(y-d)*(y-d));
if(e>f){
System.out.println("离本圆更近的圆的圆心是"+"("+c1.getP().getX()+","+c1.getP().getY()+")");
}
else if(e<f){
System.out.println("离本圆更近的圆的圆心是"+"("+c2.getP().getX()+","+c2.getP().getY()+")");
}
}
else{
System.out.println("这两个圆不是互为外切圆的,不可以继续向下进行");
}
return null;
}
public float distance(Circle c1, Circle c2) { // 返回两个参数圆圆心之间的距离
int a;
a=c1.getP().getX();
int b;
b=c2.getP().getX();
double c;
c=c1.getRadius();
double d;
d=c2.getRadius();
float e;
e=(float)Math.sqrt(((a-c)*(a-c))+(b-d)*(b-d));
System.out.println("这两个圆的圆心距离是"+e);
return radius;
}
public String toString() {//返回本圆的基本信息,格式为(圆心x坐标值,圆心y坐标值,圆半径)。如:(0, 0, 2)
System.out.println("该圆的基本信息为:("+p.getX()+","+p.getY()+","+getRadius()+")");
return ""+radius;
}
}
//测试
package java_1105;
import java.util.Scanner;
public class TextCircle {
public static void main(String[] args) {
System.out
.println("请输入你要计算哪道题(1,2,3,4,5).1代表isInside,2代表outerRect,3代表Circle join,4代表distance");
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
if (i == 1) { // 判断一个点是否在圆内
System.out.println("请输入指定圆的圆心坐标x");
int x = sc.nextInt();
System.out.println("请输入指定圆的圆心坐标y");
int y = sc.nextInt();
System.out.println("请输入指定圆的半径");
int r = sc.nextInt();
System.out.println("请输入测试圆的圆心坐标x");
int x1 = sc.nextInt();
System.out.println("请输入测试圆的圆心坐标y");
int y1 = sc.nextInt();
Circle c = new Circle();
c.radius = (int) r;// 把键盘输入的半径赋给实际圆的半径
c.p = new Point(x1, y1);
c.isInside(c.p);
} else if (i == 2) { // 返回一个矩形的外接圆
System.out.println("请输入矩形左下角坐标x的值");
int x2 = sc.nextInt();
System.out.println("请输入矩形左下角坐标y的值");
int y2 = sc.nextInt();
System.out.println("请输入矩形的宽");
int w = sc.nextInt();
System.out.println("请输入矩形的高");
int h = sc.nextInt();
Circle c = new Circle();// 实例化一个圆
Rectangle r = new Rectangle();// 实例化一个矩形
r.point = new Point(x2, y2);// 取矩形的点,将x2,y2赋给新的点point,实例化一个点
r.width = w;// 把键盘输入的矩形的宽赋给实际的矩形的宽
r.height = h;
c.outerRect(r);// 调用outerRect方法
} else if (i == 3) { // 返回两个参数圆的最小外接圆
System.out.println("请输入本圆的圆心的x坐标");
int x = sc.nextInt();
System.out.println("请输入本圆的圆心的y坐标");
int y = sc.nextInt();
System.out.println("请输入本圆的半径");
int r = sc.nextInt();
System.out.println("请输入第一个测试圆的圆心的x坐标");
int x1 = sc.nextInt();
System.out.println("请输入第一个测试圆的圆心的y坐标");
int y1 = sc.nextInt();
System.out.println("请输入第一个测试圆的半径");
int r1 = sc.nextInt();
System.out.println("请输入第二个测试圆的圆心的x坐标");
int x2 = sc.nextInt();
System.out.println("请输入第二个测试圆的圆心的y坐标");
int y2 = sc.nextInt();
System.out.println("请输入第二个测试圆的半径");
int r2 = sc.nextInt();
Circle c = new Circle();
c.setP(new Point(x, y));
Circle c1 = new Circle();
c1.setP(new Point(x1, y1));
Circle c2 = new Circle();
c2.setP(new Point(x2, y2));
c.radius = r;
c1.radius = r1;
c2.radius = r2;
c.join(c1, c2);
} else if (i == 4) { // 返回两个参数圆圆心之间的距离
System.out.println("请输入第一个圆的圆心的x坐标");
int x1 = sc.nextInt();
System.out.println("请输入第一个圆的圆心的y坐标");
int y1 = sc.nextInt();
System.out.println("请输入第一个圆的半径");
int r1 = sc.nextInt();
System.out.println("请输入第二个圆的圆心的x坐标");
int x2 = sc.nextInt();
System.out.println("请输入第二个圆的圆心的y坐标");
int y2 = sc.nextInt();
System.out.println("请输入第二个圆的半径");
int r2 = sc.nextInt();
Circle c1 = new Circle();
c1.setP(new Point(x1, y1));
Circle c2 = new Circle();
c2.setP(new Point(x2, y2));
c1.radius = r1;
c2.radius = r2;
Circle c = new Circle();
c.distance(c1, c2);
} else if (i == 5) { // 返回本圆的基本信息,格式为(圆心x坐标值,圆心y坐标值,圆半径)如:(0, 0, 2)
System.out.println("请输入本圆的圆心的x坐标");
int x3 = sc.nextInt();
System.out.println("请输入本圆的圆心的y坐标");
int y3 = sc.nextInt();
System.out.println("请输入本圆的半径");
int r = sc.nextInt();
Circle c = new Circle();// 调用前面的无参构造方法
Point p = new Point(x3, y3);// 调用circle里的有参构造方法,将键盘输入的两个坐标
c.setP(p);// 给原来的point赋值
c.radius = r;
c.toString();
} else {
System.out.println("输入有误,只能输入1~5");
}
}
}
第一题:判断点是否在圆内,测试结果
第二题:求矩形的外接圆
第三题:求两个圆的外接圆
第四题:求两个圆心之间的距离
第五题:返回圆的基本信息
输出别的数字将会提示出错
矫美老师很耐心的帮我解决每一个问题,很感动