程序中的逻辑错误,使用梯形近似来找到曲线下面积

时间:2014-04-16 06:32:00

标签: 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);
    }
}

谢谢你的帮助,伙计们。

1 个答案:

答案 0 :(得分:1)

问题是您从未运行distance()方法,因此distance字段保持为零。给一个字段和一个方法命名是一个非常可怕的想法。