我正在为即将到来的考试而学习,我正在研究样本问题,特别是以下一个:
添加到类Point下面的一个名为midpoint的实例方法,它返回一个Point类型的对象,表示两个点的中点,其中一个点作为参数提供,另一个是当前点(即由当前点提供的点)本地实例变量)。请注意,中点返回一个新的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);
}
}
答案 0 :(得分:1)
似乎没有必要调用get()
方法。
其次,使用对象调用midPoint
(根据问题中的要求)。因此,它应该是:
p1.midPoint(p2);
最后,由于该方法返回Point
类型,因此请确保捕获返回的内容。
Point p3 = p1.midPoint(p2);
答案 1 :(得分:1)
从您作为代码呈现的内容来看,这绝对是错误的,midPoint是一种类方法,所以使用它的唯一方法是首先实例化类,就像你p1一样,然后为那个特定的实例调用方法:
Point p1 = new Point(whatever);
Point p2 = new Point(whatever);
Point p3 = p1.midPoint(p2);
答案 2 :(得分:1)
p1.midPoint(p2)
,你不需要扩展点类p1.get()
实际在做什么?有没有机会和扫描仪一样?答案 3 :(得分:0)
除了其他人写的所有内容之外,您的MidPoint
课程不应该延伸Point
课程。我认为你这样做的目的是使用midPoint方法,但这是错误的。您没有向Point类添加任何新行为。
答案 4 :(得分:0)
import java.util.*;
public class Hello {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
int d=sc.nextInt();
System.out.println((a+c)/2,(b+d)/2);
}
}