所以我不认为我在数学上不好,我不认为如果我知道我是什么时,将简单的数学距离公式转换成代码就是困难的这样做。这显然我没有。长话短说,我应该计算两个3D点之间的距离,出于某种原因,我的公式无法正常工作。我不知道我是不是写错了,或者是写了什么,因为我已经写了好几遍,但仍然无法正常工作。Math.pow和Math.sqrt公式返回值为0
这是我的public class Distance
,里面有我的距离公式
public class Distance
{
Distance() {}
double d;
double x1, x2, y1, y2, z1, z2;
public void setD (double d)
{
this.d = d;
}
double distance()
{
/* return Math.sqrt (Math.pow ((x2 - x1), 2)
+ Math.pow ((y2 - y1), 2)
+ Math.pow ((z2 - z1), 2));
*/
return Math.sqrt ((x2 - x1) * (x2 - x1)
+ (y2 - y1) * (y2 - y1)
+ (z2 - z1) * (z2 - z1));
}
}
我试图写它两种方式,(我使用嵌套循环for
均用于测试为0,所有的变量循环最多3个,在我为用户输入编写之前进行测试)。
如果有人可以解释为什么我得到这个问题,这将不胜感激。
编辑:我知道人们告诉我初始化到一定的值。我很确定我在我的测试循环中初始化了它,我意识到我应该为了清晰起见而发布。
class Distance_test
{
public static void main (String [] args)
{
Distance line = new Distance();
double d;
for (double x1 = 0; x1 <= 2; x1++)
{
line.setD (x1);
d = line.distance();
for (double x2 = 0; x2 <= 2; x2++)
{
line.setD (x2);
for (double y1 = 0; y1 <= 2; y1++)
{
line.setD (y1);
for (double y2 = 0; y2 <= 2; y2++)
{
line.setD (y2);
for (double z1 = 0; z1 <= 2; z1++)
{
line.setD (z1);
for (double z2 = 0; z2 <= 2; z2++)
{
line.setD (z2);
System.out.printf ("\n Distance of 3D line with points %.2f, %.2f, %.2f, %.2f, %.2f, %.2f is %.2f\n", x1, x2, y1, y2, z1, z2, line.distance());
}
}
}
}
}
}
}
}
是的,我认为这是一个有点乱,但我只是想获得之前,我得到它的外观漂亮,它先工作。
看起来像C#,而不是C++。另外,你在哪里分配'x1','x2','y1','y2','z1','z2'?如果这些变量没有被初始化,它们都将默认为0. – 2014-10-02 22:38:39
对不起,我正在做另一个C++任务,并且我的标记混淆了。 – 2014-10-02 22:48:56