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

标签 java class static compiler-errors logic

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

相关文章:

java - 单例和多线程

java - 更新 Android Studio Canary beta 1 后。我收到错误 min sdk 26

c - C 中 __IO 和 static 关键字的用途是什么?

java - 对于我的代码,如何实现关键监听器?

PHP如何在方法内部使用类实例

c++ - 声明/初始化私有(private)嵌套结构的静态成员

java - 正确的单例设计?

java - 删除链接 jsoup 中的脚本

java - 为什么作为三元运算符编译的结果返回 null(期望 boolean 值)?

html - 如何根据BEM命名子元素?