扩展java点类以查找中点

时间:2012-08-20 10:36:24

标签: java point

我正在为即将到来的考试而学习,我正在研究样本问题,特别是以下一个:

添加到类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);
}
}

5 个答案:

答案 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)

  1. 你的主要方法是无效的,所以它不能返回点
  2. 如果你想对点p1和p2进行操作,如果你这样做,它们之间的中点是p1.midPoint(p2),你不需要扩展点类
  3. 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);

    }
}