如何正确修复函数调用(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:更改参数变量名,使代码能够自我注释,并使调试更容易。请参见编辑以回答问题。