一、
package org.jsoft.HomeWork;
public class Point {
int x;
int y;
public Point(int x,int y){
setX(x);
setY(y);
}
//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 String disPlay(int x,int y){
return "The point is at:"+"("+x+","+y+")";//输出点的坐标。
}}
//测试point 类
package org.jsoft.HomeWork;
public class TestPoint {
public static void main(String[] args) {
// TODO Auto-generated method stub
Point p=new Point(100, 43);
System.out.println("The point is at:"+"("+p.getX()+","+p.getY()+")");
//通过get方法来获得x,y 的值并输出。
System.out.println(p.disPlay(100,42)); //通过调用disPlay方法来输出点坐标。
}
}
二、
package org.jsoft.HomeWork;
public class Rectangle {
Point point;
int width;
int height;
public Rectangle(Point p,int width,int heigth){
}
public Rectangle(int x,int y,int width,int heigth){
}
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 setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getArea(){//getArea 方法用来计算面积。
int area=width*height;
return area ;
}public String display(){//disPlay方法来输出矩形的基本信息。
return "矩形的高为:"+height+"\n"+"矩形的宽为:"+width ;
}
}
package org.jsoft.HomeWork;
import java.util.Scanner;
public class TestRectangle {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入 矩形的宽和高(整数):");
Scanner sc=new Scanner(System.in);//从键盘输入
int a=sc.nextInt(); //输入的第一个值赋值给a
int b=sc.nextInt(); //输入的第二个值赋值飞b
Rectangle r=new Rectangle(); //实例化Rectangle 对象r
r.height=b; //将b 的值赋值给高
r.width=a;//将a的值赋值给宽
System.out.println("矩形的面积是:"+r.getArea()); //调用getArea方法并输出
System.out.println(r.display());//调用disPlay方法并输出
}
}
三、
package org.jsoft.HomeWork;
import java.awt.Point;
import java.awt.Rectangle;
public class Circle {
Point p;
double x,y,r;
//一系列get和set 方法
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 double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
public Point getP() {
return p;
}
public void setP(Point p) {
this.p = p;
}
//各种带参数和不带参数的构造方法
public Circle(){
}
public Circle(Point p,float r){
}
public Circle (double x,double y,double r ){
setX(x);
setY(y);
setR(r);
}public Circle(Circle c){
}
//普通方法
public boolean isInside(double x1,double y1)//判断一个点是否在圆内
{
if((x1-getX())*(x1-getX())+(y1-getY())*(y1-getY())<=getR()*getR())
//如果(x-a)的平方+(x-b)的平方<=半径的平方,即点a,b 在圆内
{
return true;
}
else{
return false;
}
}public String outRect(double x1,double y1,double width,double height)
//返回一个矩形的外接圆
{ double x=(width+height)/2+x1;//圆心得横坐标等于宽加高除以2 加上矩形左下角的横坐标
double y=(width+height)/2+y1;//圆心得纵坐标等于宽加高除以2 加上矩形左下角的纵坐标
double r=Math.sqrt(width*width+height*height); //半径等于根号下(宽的平方加高的平方)
return "外接圆为:("+x+","+y+","+r+")";
}public String join(double x1,double y1,double r1, double x2,double y2,double r2)//返回两个参数圆的最小外接圆
{
double xx= (x2+x1)/2;//外接圆x坐标等于连个参数圆的横坐标相加除以2
double yy= (y2+y1)/2;//外接圆y标等于连个参数圆的纵坐标相加除以2
double rr=(Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))+r1+r2)/2;
//半径等于 c1,c2圆心之间的距离加上两个圆的半径除以二
return "c1、c2最小外接圆的圆心 为:"+xx+","+yy+"\n"+"半径为:"+rr;
} public double distance(double x1,double y1,double x2,double y2)//返回两个参数圆圆心之间的距离
{
double xx=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//两个圆心之间的距离等于:根号下((x1-x2)的平方加(y1-y2)的平方)
return xx;
}public String toString()//返回本圆的基本信息,格式为(圆心x坐标值,圆心y坐标值,圆半径)。
{
x=getX(); //将获得的x赋值给x
y=getY();//将获得的y赋值给y
r=getR();//将获得的r赋值给r
return "("+x+","+y+","+r+")";//输出x,y,r
}
}
//测试 Circle类:
package org.jsoft.HomeWork;
import java.util.Scanner;
public class TestCircle {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入圆心的坐标以及圆的半径:");
System.out.println("圆心横坐标x:");
Scanner sc=new Scanner(System.in);
double x=sc.nextInt();
System.out.println("圆心纵坐标y:");
double y=sc.nextInt();
System.out.println("圆 的半径r:");
float r=sc.nextFloat();
System.out.println("请输入你要选择的功能:");
System.out.println("1、判断一个点是否在圆内"+"\n"+"2、返回一个矩形的外接圆"+"\n"+"3、返回两个参数圆的最小外接圆"+"\n"+"4、返回两个参数圆圆心之间的距离"+"\n"+"5、返回圆的基本信息");
int a=sc.nextInt();
Circle cir=new Circle(x,y,r);
if(a==1)//如果输入的数字为1 则执行此条语句
{
System.out.println("请输入你要判断的点的坐标:");
System.out.println("横坐标x:");
double x1=sc.nextFloat();
System.out.println("纵坐标y:");
double y1=sc.nextFloat();
System.out.println(cir.isInside(x1,y1));//调用Circle 中的isInside方法,并输出。
}else if (a==2){//返回一个矩形的外接圆。假设矩形的左下角定点在坐标原点
System.out.println("请输入矩形左下角x坐标:");
double x1=sc.nextDouble();
System.out.println("请输入矩形左下角y坐标:");
double y1=sc.nextDouble();
System.out.println("请输入矩形的宽:");
double width=sc.nextDouble();
System.out.println("请输入矩形的高:");
double height=sc.nextDouble();
System.out.println(cir.outRect(x1,y1,width, height));//调用Circle中的outRect方法,并输出。
}else if (a==3){//返回两个参数圆的最小外切圆
System.out.println("请输入两个圆的圆心坐标及半径:"+"\n"+"第一个圆c1的圆心横坐标x1:");
double x1=sc.nextDouble();
System.out.println("第一个圆圆心的纵坐标y1:");
double y1=sc.nextDouble();
System.out.println("第一个圆的半径:");
double r1=sc.nextDouble();
System.out.println("请输入第二个圆c2的圆心坐标x2:");
double x2=sc.nextDouble();
System.out.println("第二个圆圆心的纵坐标y2:");
double y2=sc.nextDouble();
System.out.println("第二个圆的半径:");
double r2=sc.nextDouble();
System.out.println(cir.join(x1,y1,r1,x2,y2,r2));//调用Circle 中的join方法,并输出。
}else if (a==4){//返回两个参数圆圆心之间的距离
System.out.println("输入第一个圆c1的横坐标:");
double x1=sc.nextDouble();
System.out.println("输入纵坐标:");
double y1=sc.nextDouble();
System.out.println("输入第二个圆c2的横坐标:");
double x2=sc.nextDouble();
System.out.println("输入纵坐标:");
double y2=sc.nextDouble();
System.out.println("两个圆的圆心的距离为:"+cir.distance(x1,y1,x2 ,y2));
//调用Circle中的disPlay方法并输出。
}else if(a==5){//显示圆的基本信息
System.out.println(cir.toString());//调用Circle中的toString方法并输出。
}
else {
System.out.println("输入错误!请重新运行");
}
}
}
四、
package org.jsoft.HomeWork;
import java.util.Scanner;
public class TestRectangle2 extends Circle
//继承Circle, 防止一些Circle的属性不能用,此题中可不加,因为都Circle中的属性都是public{
public static void main(String[] args) {
do//循环语句,用于一小段程序结束后继续执行上一次程序(例如执行完inInside后可以继续执行join)
{
System.out.println("请输入命令(isInside/outerRect/join/distance/quit):");
Scanner sc=new Scanner(System.in);
String a1=sc.next();
if (a1.equals("isInside"))//如果输入的字符串等于"isInsdide"则执行接下来的语句。
{
System.out.print("请指定圆心的x坐标:");
double a2=sc.nextDouble();
System.out.print("请指定圆心的y坐标:");
double a3=sc.nextDouble();
System.out.print("请指定半径的长度:");
double a4=sc.nextDouble();
System.out.print("请输入测试点的x坐标:");
double a5=sc.nextDouble();
System.out.print("请输入测试点的y坐标:");
double a6=sc.nextDouble();
Circle c=new Circle(a2,a3,a4);
String aa;
boolean bb=c.isInside(a5, a6);// 执行Circle中isInside方法,并将返回的值赋值给b
if(bb==true)//如果b=true 则aa为在
{
aa="在";}
else{
aa="不再";// 如果b=false则aa为不在
}
System.out.println("isInside的结果为:测试点("+a5+","+a6+")"+aa+"你所指定的圆("+a2+","+a3+","+a4+")内");
//输出各项数据并打印出结果在或不在。
}
else if(a1.equals("outerRect")) //如果输入的字符串等于"outerRect"则执行下面语句
{
System.out.print("请输入矩形左下角x坐标:");
double x1=sc.nextDouble();
System.out.print("请输入矩形左下角y坐标:");
double y1=sc.nextDouble();
System.out.print("请输入矩形的宽:");
double width=sc.nextDouble();
System.out.print("请输入矩形的高:");
double height=sc.nextDouble();
Circle c=new Circle();
System.out.println("outerRect的结果为:矩形("+x1+","+y1+","+width+","+height+")的"+ c.outRect(x1, y1, width, height));//调用Circle 中的outRect方法并输出
}else if (a1.equals("join"))//如果输入的字符串为“join”则执行下面语句
{
System.out.println("请输入两个圆的圆心坐标及半径:"+"\n"+"第一个圆c1的圆心横坐标x1:");
double x1=sc.nextDouble();
System.out.print("第一个圆圆心的纵坐标y1:");
double y1=sc.nextDouble();
System.out.print("第一个圆的半径:");
double r1=sc.nextDouble();
System.out.print("请输入第二个圆c2的圆心坐标x2:");
double x2=sc.nextDouble();
System.out.print("第二个圆圆心的纵坐标y2:");
double y2=sc.nextDouble();
System.out.print("第二个圆的半径:");
double r2=sc.nextDouble();
Circle c=new Circle();
System.out.println(c.join(x1,y1,r1,x2,y2,r2));//调用Circle中的join方法并输出结果。
} else if (a1.equals("distance"))//如果输入的字符串为"distance"则执行下面的语句
System.out.print("输入第一个圆c1的横坐标:");
double x1=sc.nextDouble();
System.out.print("输入纵坐标:");
double y1=sc.nextDouble();
System.out.print("输入第二个圆c2的横坐标:");
double x2=sc.nextDouble();
System.out.print("输入纵坐标:");
double y2=sc.nextDouble();
Circle c=new Circle();
System.out.println("两个圆的圆心的距离为:"+c.distance(x1,y1,x2 ,y2));
//调用Circle中的distance方法并输出结果 }
else if (a1.equals("quit")){
System.out.println("程序结束!再见!!");
break; // 如果输出的为“quit” 则结束循环。
}
}while(true);
}
}