我正在为即将到来的考试而学习,并且正在处理示例问题,特别是以下问题:
在类 Point 下面添加一个名为 midpoint 的实例方法,该方法返回一个 Point 类型的对象,表示两个点的中点,其中一个点作为参数提供,另一个是当前点(即本地实例提供的点变量)。注意 midpoint 返回一个新的 Point 对象。善用 Point 类,编写一个程序,读取两个点并打印它们的中点。输入由两行组成,每行包含一个点的 x 和 y 坐标。下面是输入/输出的示例,输入用粗体表示:
Enter two points
2.1 3.2
3.0 2.8
The midpoint is (2.55,3.0)
我的点类代码如下,似乎没问题(请随时指出任何错误或改进):
class Point {
private double x, y; // coordinates
Point(double x0, double y0){ // all-args constructor
x = x0; y = y0;
}
Point(){}; // no-args constructor (defaults apply)
void get() {
x = Console.readDouble();
y = Console.readDouble();
}
public Point midPoint(Point p) {
double mx = (p.x + x)/2;
double my = (p.y + y)/2;
return new Point(mx,my);
}
public String toString()
{
return "(" + x + "," + y + ")";
}
}
我遇到麻烦的地方是在下面的代码中实际使用我的 midPoint 方法,任何建议都值得赞赏。
import java.util.Scanner;
import java.io.*;
class Midpoint extends Point
{
public static void main (String[] args ) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter two points:");
double x1 = scanner.nextDouble();
double y1 = scanner.nextDouble();
double x2 = scanner.nextDouble();
double y2 = scanner.nextDouble();
Point p1 = new Point(x1, y1);
Point p2 = new Point(x2, y2);
p1.get();
return midPoint(p2);
}
}