我写了一些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)
"由于一些奇怪的原因,它不收集输入也没有找到距离,"
我认为该程序仍在等待您输入积分.您当前可能正在输入:
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)