函数题:移动的圆
1.构造一个Location类:
1)该类有两个double型私有成员变量x和y,分别表示横坐标和纵坐标;
2)该类有一个有参构造方法,能初始化成员变量x和y;
3)该类具有成员变量的x和y的访问方法和赋值方法。
2.构造一个Circle类:
1)该类有一个double型成员变量radius存放半径;
2)该类有一个Location型成员变量center,存放圆心坐标;
2)该类有一个有参构造方法Circle(double x, double y, double r),初始化成员变量radius、center,其中center的初始化过程是:使用参数x和y创建类Location的实例,并将这个对象引用赋值给center;
3)该类具有translate(double tx, double ty) 方法,方法无返回值,这个方法能移动圆心坐标,使x坐标增加tx,y坐标增加ty。
4)该类具有overlaps(Circle other)方法,该方法返回值为boolean型,方法判定参数圆是否和当前圆重叠。如果两个圆圆心的距离小于两个圆半径的和则两个圆重叠。圆心距离由如下公式计算:距离= sqrt((x1-x2)^2 + (y1-y2)^2)。其中(x1,y1) and (x2,y2) 分别是两个圆的圆心坐标。
3.主类中,要求用户输入第一个圆的圆心的x、y坐标、半径,创建第一个Circle类对象,然后用户输入第二个圆的圆心的x、y坐标、半径,创建第二个Circle类对象。当两个圆没有重叠时,将第二个圆的x和y坐标都移动0.5,直到两个圆出现重叠为止。
### 裁判测试程序样例:
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double x=scanner.nextDouble();
double y=scanner.nextDouble();
double r=scanner.nextDouble();
Circle c1 = new Circle(x,y,r);
x=scanner.nextDouble();
y=scanner.nextDouble();
r=scanner.nextDouble();
Circle c2 = new Circle(x,y,r);
System.out.println("Circle 1's center is at ("+c1.getCenter().getX()+","+c1.getCenter().getY()+") with a radius of "+c1.getRadius());
System.out.println("Circle 2's center is at ("+c2.getCenter().getX()+","+c2.getCenter().getY()+") with a radius of "+c2.getRadius());
while(!c1.overlaps(c2))
{
c2.translate(0.5, 0.5);
System.out.printf("Circle 2's center is now at (%.1f,%.1f)\n",c2.getCenter().getX(),c2.getCenter().getY());
}
System.out.printf("The circles now overlap!");
scanner.close();
}
}
/* 请在这里填写答案 */
### 输入样例:
在这里给出一组输入。例如:
in
3 3 0.25
0 0 1
### 输出样例:
在这里给出相应的输出。例如:
out
Circle 1's center is at (3.0,3.0) with a radius of 0.25
Circle 2's center is at (0.0,0.0) with a radius of 1.0
Circle 2's center is now at (0.5,0.5)
Circle 2's center is now at (1.0,1.0)
Circle 2's center is now at (1.5,1.5)
Circle 2's center is now at (2.0,2.0)
Circle 2's center is now at (2.5,2.5)
The circles now overlap!
答案:若无答案欢迎评论
1)该类有两个double型私有成员变量x和y,分别表示横坐标和纵坐标;
2)该类有一个有参构造方法,能初始化成员变量x和y;
3)该类具有成员变量的x和y的访问方法和赋值方法。
2.构造一个Circle类:
1)该类有一个double型成员变量radius存放半径;
2)该类有一个Location型成员变量center,存放圆心坐标;
2)该类有一个有参构造方法Circle(double x, double y, double r),初始化成员变量radius、center,其中center的初始化过程是:使用参数x和y创建类Location的实例,并将这个对象引用赋值给center;
3)该类具有translate(double tx, double ty) 方法,方法无返回值,这个方法能移动圆心坐标,使x坐标增加tx,y坐标增加ty。
4)该类具有overlaps(Circle other)方法,该方法返回值为boolean型,方法判定参数圆是否和当前圆重叠。如果两个圆圆心的距离小于两个圆半径的和则两个圆重叠。圆心距离由如下公式计算:距离= sqrt((x1-x2)^2 + (y1-y2)^2)。其中(x1,y1) and (x2,y2) 分别是两个圆的圆心坐标。
3.主类中,要求用户输入第一个圆的圆心的x、y坐标、半径,创建第一个Circle类对象,然后用户输入第二个圆的圆心的x、y坐标、半径,创建第二个Circle类对象。当两个圆没有重叠时,将第二个圆的x和y坐标都移动0.5,直到两个圆出现重叠为止。
### 裁判测试程序样例:
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double x=scanner.nextDouble();
double y=scanner.nextDouble();
double r=scanner.nextDouble();
Circle c1 = new Circle(x,y,r);
x=scanner.nextDouble();
y=scanner.nextDouble();
r=scanner.nextDouble();
Circle c2 = new Circle(x,y,r);
System.out.println("Circle 1's center is at ("+c1.getCenter().getX()+","+c1.getCenter().getY()+") with a radius of "+c1.getRadius());
System.out.println("Circle 2's center is at ("+c2.getCenter().getX()+","+c2.getCenter().getY()+") with a radius of "+c2.getRadius());
while(!c1.overlaps(c2))
{
c2.translate(0.5, 0.5);
System.out.printf("Circle 2's center is now at (%.1f,%.1f)\n",c2.getCenter().getX(),c2.getCenter().getY());
}
System.out.printf("The circles now overlap!");
scanner.close();
}
}
/* 请在这里填写答案 */
### 输入样例:
在这里给出一组输入。例如:
in
3 3 0.25
0 0 1
### 输出样例:
在这里给出相应的输出。例如:
out
Circle 1's center is at (3.0,3.0) with a radius of 0.25
Circle 2's center is at (0.0,0.0) with a radius of 1.0
Circle 2's center is now at (0.5,0.5)
Circle 2's center is now at (1.0,1.0)
Circle 2's center is now at (1.5,1.5)
Circle 2's center is now at (2.0,2.0)
Circle 2's center is now at (2.5,2.5)
The circles now overlap!
答案:若无答案欢迎评论