1

私は次の試験に向けて勉強しており、サンプル問題、特に次の問題に取り組んでいます。

2 つの点の中点を表す Point 型のオブジェクトを返す midpoint と呼ばれるインスタンス メソッドの下のクラス Point に追加します。ここで、点の 1 つはパラメーターとして提供され、もう 1 つは現在の点 (つまり、ローカル インスタンスによって提供される点) です。変数)。midpoint は新しい Point オブジェクトを返すことに注意してください。クラス Point をうまく利用して、2 つの点を読み取ってその中点を出力するプログラムを作成します。入力は 2 行で構成され、各行には点の 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);
}
}
4

5 に答える 5

1

メソッドの呼び出しget()は不要のようです。

次に、midPointオブジェクトを使用して呼び出します(質問の要件に従って)。したがって、次のようになります。

p1.midPoint(p2);

最後に、そのメソッドはPoint型を返すので、返されるものを確実にキャッチしてください。

Point p3 = p1.midPoint(p2);
于 2012-08-20T10:41:25.087 に答える
1

あなたがコードとして提示したものから、それは間違いなく間違っています.midPointはクラスメソッドであるため、それを使用する唯一の方法は、最初に p1 のようにクラスをインスタンス化し、次にその特定のインスタンスのメソッドを呼び出すことです:

Point p1 = new Point(whatever);
Point p2 = new Point(whatever);

Point p3 = p1.midPoint(p2);
于 2012-08-20T10:42:36.923 に答える
1
  1. あなたのメインメソッドは無効であるため、ポイントを返すことはできません
  2. ポイントp1とp2で操作したい場合、それらの間の中間点は、p1.midPoint(p2)この方法で行う場合、ポイントクラスを拡張する必要はありません
  3. あなたp1.get()は実際に何をしていますか?もしかしてスキャナーと同じ?
于 2012-08-20T10:45:36.187 に答える
0

他の人が書いたすべてのものに加えて、あなたのMidPointクラスはクラスを拡張するべきではありませんPoint。その midPoint メソッドを使用する目的でそれを行ったと思いますが、それは間違っています。Point クラスに新しい動作を追加しませんでした。

于 2012-08-20T11:09:45.347 に答える