我想在Java中计算两点之间的距离

2022-09-01 09:09:22

好吧,所以我已经编写了大部分程序,可以让我确定两个圆圈是否重叠。

除了一个问题之外,我对我的程序没有任何问题:程序不会接受我为两个中心点之间的距离编写的代码。我可以弄清楚if/else逻辑,以告诉用户以后根据距离值会发生什么,但我想知道现在出了什么问题。Eclipse,我正在编码的程序,告诉我距离应该解析为数组,但我已经告诉过你它是一个int。

这是我的代码:

package circles;
import java.util.Scanner;

public class MathCircles {    
    // variable for the distance between the circles' centers
    public static int distance;

    // variable for the lengths of the radii combined
    public static int radii;

    public static void main(String[] args) {
        // Get the x-value of the center of circle one
        System.out.println("What is the x-coordinate for the center of circle one?");
        Scanner keyboard = new Scanner(System.in);
        int x1 = keyboard.nextInt();

        //Get the y-value of the center of circle one
        System.out.println("What is the y-coordinate for the center of circle one?");
        Scanner keyboard1 = new Scanner(System.in);
        int y1 = keyboard1.nextInt();

        //Get the radius length of circle one.
        System.out.println("How long is circle one's radius?");
        Scanner keyboard2 = new Scanner(System.in);
        int r1 = keyboard2.nextInt();

        // Get the x-value of the center of circle two.
        System.out.println("What is the x-coordinate for the center of circle two?");
        Scanner keyboard3 = new Scanner(System.in);
        int x2 = keyboard3.nextInt();

        //Get the y-value of the center of circle two.
        System.out.println("What is the y-coordinate for the center of circle two?");
        Scanner keyboard4 = new Scanner(System.in);
        int y2 = keyboard4.nextInt();

        //Get the radius length of circle two.
        System.out.println("How long is circle two's radius?");
        Scanner keyboard5 = new Scanner(System.in);
        int r2 = keyboard5.nextInt();

        /*
         * OK, so now I have the location of the two circles' centers,
         * as well as the lengths of their radii.
         * The circles are intersecting IF THE DISTANCE BETWEEN THE TWO CENTERS
         * IS EQUAL TO OR LESS THAN THE COMBINED LENGTHS OF THE RADII.
         * Now I need to get some math done.
         */

        //calculate the combined lengths of the radii

        radii = r1 + r2;

        //calculate the distance
        distance = Math.sqrt((x1-x2)(x1-x2) + (y1-y2)(y1-y2));

    }    
}

答案 1

根据@trashgod的评论,这是计算距离的最简单方法:

double distance = Math.hypot(x1-x2, y1-y2);

以下文档Math.hypot

返回:无中间溢出或下溢。sqrt(x²+ y²)


答案 2

与符号不同,大多数编程语言(包括Java)需要符号来执行乘法。因此,您的距离计算应为:maths-on-paper*

distance = Math.sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));

或者:

distance = Math.sqrt(Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2));