距离公式错误

Wum*_*mbo 1 java

我写了一些java代码来计算2点之间的距离.由于一些奇怪的原因,它不收集输入也没有找到距离,这就是我试图做的事情.有人可以帮助我,这是我的代码:

import java.util.Scanner;

public class Distance
{
    static double distance(double x1, double y1, double x2, double y2) {
        return Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
    }

    public static void main(String[] args) {
        double x2, x1, y2, y1;
        double distance;

        Scanner scan = new Scanner (System.in);
        System.out.println("Enter two points: ");
        x1 = scan.nextDouble();
        y1 = scan.nextDouble();
        x2 = scan.nextDouble();
        y2 = scan.nextDouble();

        distance = distance(x1, y1, x2, y2);
        System.out.println("The distance between the two points is " + distance + " .");
    }
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*tha 5

"由于一些奇怪的原因,它不收集输入也没有找到距离,"

我认为该程序仍在等待您输入积分.您当前可能正在输入:

5.0 4.5 6.7 4.5
Run Code Online (Sandbox Code Playgroud)

一切都在同一条线上.触发输入后扫描程序只读取一个双精度数.要解决这个问题,你必须阅读整行并将其拆分并解析它或者只是执行此操作

                System.out.println("Enter x1: ");
                x1 = scan.nextDouble();
                System.out.println("Enter x2: ");
                y1 = scan.nextDouble();
                System.out.println("Enter y1: ");
                x2 = scan.nextDouble();
                System.out.println("Enter y2: ");
                y2 = scan.nextDouble();
Run Code Online (Sandbox Code Playgroud)

每次输入后按Enter键

如果你想阅读整行.您需要将输入作为String,拆分,然后解析

                String line = scan.nextLine().trim();
                String[] tokens = line.split("\\s+");
                x1 = Double.parseDouble(tokens[0]);
                x2 = Double.parseDouble(tokens[1]);
                y1 = Double.parseDouble(tokens[2]);
                y2 = Double.parseDouble(tokens[3]);
Run Code Online (Sandbox Code Playgroud)