簡體   English   中英

為什么我不能使用 java.awt.geom.Point2D 中的距離方法?

[英]Why can't I use distance method from java.awt.geom.Point2D?

我不能從 Point2D 使用distance() 請幫我修復我的代碼,謝謝!

import java.util.Scanner;

import java.awt.geom.Point2D.Double;

public class TestPoint2D {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        System.out.print("Enter point 1");
        double x1 = input.nextDouble();
        double y1 = input.nextDouble();
        
        System.out.print("Enter point 2");
        double x2 = input.nextDouble();
        double y2 = input.nextDouble();
        
        Point2D p1 = new Point2D(x1, y1);
        Point2D p2 = new Point2D(x2, y2);
        System.out.println(p1.distance(p2));
    }
}

正如Point2D 文檔所說:

這個類只是存儲二維坐標的所有對象的抽象超類。 坐標的實際存儲表示留給子類。

所以需要使用Point2D.DoublePoint2D.Float來初始化對象。

所以這個初始化Point2D代碼有效:

Point2D p1 = new Point2D.Double(x1, y1);
Point2D p2 = new Point2D.Double(x2, y2);

這個“問題”是因為Point2D是一個抽象類。 如果您有疑問,可以在此處查看工作原理。 但是,要將其與“Point2D 問題”聯系起來,請檢查第一段,您會更好地理解。

抽象類:是一個受限制的類,不能用於創建對象(要訪問它,它必須從另一個類繼承)。

這正是問題(無法創建對象)和解決方案(從另一個類繼承)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM