私は次の試験に向けて勉強しており、サンプル問題、特に次の問題に取り組んでいます。
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);
}
}