gpt4 book ai didi

java - 使用梯形近似求曲线下面积的程序中存在逻辑错误

转载 作者:行者123 更新时间:2023-12-01 13:08:17 25 4
gpt4 key购买 nike

任何人都可以找到为什么这个类无法运行吗?我犯了一些错误,但我似乎看不到错误。我实例化一个对象,并使用我认为返回我想要的值的正确符号来打印其区域。对象中的信息应评估为 ~7.2。

public class TrapApx
{
private double x1;
private double x2;
private double distance;
private double numberOfSections;
private double changeInX;
private double area = 0;

public TrapApx(double firstX, double secondX, double numOfSec)
{
x1 = firstX;
x2 = secondX;
numberOfSections = numOfSec;
}

public double distance()
{
return distance = x2 - x1;
}

public double changeX()
{
return changeInX = distance / numberOfSections;
}

public double funcX(double x)
{
return Math.sqrt(x-1);
}

public double areaApx()
{
for(double x = x1; x < x2; x += changeInX)
{
area += (funcX(x) + funcX(x + changeInX))/2 * changeInX;
}
return area;
}
}

public class TrapApxTest
{
public static void main(String []args)
{
TrapApx one = new TrapApx(1, 6, 5);
System.out.println(one.areaApx());
}
}

我尝试查看我的变量之一或其突变是否无法正常工作,因此我创建了这个没有对象的静态类,并按程序对其进行了测试,它返回了正确的答案。

public class tester
{
public static double funcX(double x)
{
return Math.sqrt(x-1);
}

public static void main(String []args)
{
double x1 = 1,
x2 = 6,
distance = x2 - x1,
numberOfSections = 5,
changeInX = distance / numberOfSections,
area = 0;

for(double x = x1; x < x2; x += changeInX)
{
area += (funcX(x) + funcX(x + changeInX))/2 * changeInX;
}

System.out.println(area);
}
}

谢谢大家的帮助。

最佳答案

问题是您从未运行 distance() 方法,因此 distance 字段保持为零。将字段和方法同名是一个非常糟糕的主意。

关于java - 使用梯形近似求曲线下面积的程序中存在逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23101742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com