如何正确修复函数调用(java)?

如何正确修复函数调用(java)?,java,Java,这只是代码的一小部分,因为我觉得这足以让我的观点得到理解 public class Line { private double x1; private double x2; private double y1; private double y2; public Project2(double a,double b,double c,double d) { x1 = a; x2 = b; y1

这只是代码的一小部分,因为我觉得这足以让我的观点得到理解

public class Line { 

    private double x1; 
    private double x2; 
    private double y1; 
    private double y2; 

    public Project2(double a,double b,double c,double d) { 
        x1 = a;
        x2 = b;
        y1 = c;
        y2 = d;
    }

    public double length () { //the length of a line
        double step1 = Math.pow((x1-x2),2);
        double step2 = Math.pow((y1-y2),2);
        double step3 = step1+step2;
        double step4 = Math.sqrt(step3);
        return step4;}}


import java.util.Scanner;

public class Project2Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);



        System.out.println("Enter starting coordinates for a line (starting with x then y): ");
        double a = input.nextInt();
        double b = input.nextInt();
        System.out.println("Enter ending coordinates for the line (starting with x then y): ");
        double c = input.nextInt();
        double d = input.nextInt();
        Line line1 = new Line(a,b,c,d);


        System.out.println("The length of the line is: " + line1.length());
每当我尝试运行它时,它只会给出线的长度为0.0。 起初我试图将line1作为参数传递,但后来我意识到我无法(或至少不知道如何)调用它,因为我无法执行Line.length(line1)或line1.length(line1)。

您声明:

我试着用一个简单的1,1和2,2。预期输出是1.41,我得到的是0.0

您混淆了方法中参数的顺序。您的方法列出了x1、x2、y1、y2,使用这些,1、1、2、2将检查从点1、2到1、2的直线长度,即0.0。我想你应该把参数顺序改成x1,y1,x2,y2

事实上,您应该澄清您的参数变量,使它们能够自我注释。去掉a、b、c、d并改为:x1、y1、x2、y2:

public class Line { 

  // order changed
  private double x1; 
  private double y1; 
  private double x2; 
  private double y2; 

  // parameter names clarified and order changed
  public Project2(double x1, double y1, double x2, double y2) { 
    this.x1 = x1;
    this.y1 = y1;
    this.x2 = x2;
    this.y2 = y2;
  }

您能提供您尝试过的输入、预期输出和实际输出吗?基本上,这是直线距离的公式:sqrt((x1-x2)^2+(y1-y2)^2)。我试着用一个简单的1,1和2,2。预期输出是1.41,我得到的是0.0我们知道它是什么,但是你应该展示一些输入,你的预期输出和你观察到的输出。不,我理解你的意图。代码本身在我看来很好,这就是为什么我需要查看您的特定输入,以防有其他东西在起作用。嗯,我觉得自己很笨。谢谢。@user3335429:更改参数变量名,使代码能够自我注释,并使调试更容易。请参见编辑以回答问题。