繁体   English   中英

初始化一个双精度数组java

[英]Initializing an array of doubles java

我不能为我的生活理解为什么这段代码不起作用。 我正在创建一个函数来评估给定x区间内所有点的多项式,其频率由用户指定。 我的基础多项式代码对问题无关紧要。 我的问题是用我从Horner的方法获得的值填充我的数组。

public double[] evalAt(double s, double f, int n) {
    double[] resultArray = new double[n];
    double h =((f - s)/(n));
    if(s==f) {
        double tempResult = 0;
        for (int i = this.degree; i >= 0; i--) {
            tempResult = tempResult * s + this.terms[i].getCoefficient();
        }
        resultArray[0] = tempResult;
    } else {
        int counter = 0;
        for(double i = s; i <= f; i=i+h) {
            double tempResult = 0;
            for (int j = this.degree; j >= 0; j--) {
                tempResult = tempResult * i + this.terms[j].getCoefficient();
            }
            System.out.println("Counter: " + counter + " Result @ Counter: " + tempResult);
            resultArray[counter++] = tempResult;
        }
        System.out.println(resultArray[0]);
        System.out.println(resultArray[1]);
        System.out.println(resultArray[2]);
        System.out.println(resultArray[3]);
    }
    return resultArray;
}

我在那里有一个print声明,告诉我计数器的值和临时结果是什么。 然后我使用resultArray['index'] = 'value'; 句法。 当我运行它时,我看到计数器和值完全符合我的要求,但是当我用底部的四个print语句检查数组时,没有任何反应。 我的输入是0,10,10

输出:

Counter: 0 Result @ Counter: 0.0
Counter: 1 Result @ Counter: 1.0
Counter: 2 Result @ Counter: 4.0
Counter: 3 Result @ Counter: 9.0
Counter: 4 Result @ Counter: 16.0
Counter: 5 Result @ Counter: 25.0
Counter: 6 Result @ Counter: 36.0
Counter: 7 Result @ Counter: 49.0
Counter: 8 Result @ Counter: 64.0
Counter: 9 Result @ Counter: 81.0
Counter: 10 Result @ Counter: 100.0

我强烈怀疑它抛出了一个ArrayIndexOutOfBoundsException,它在这个方法之外被吞没了。

您正在创建一个大小为n的数组,在本例中为10,但您的计数器从零到f (也是10),这是总共11个元素。 所以在至少其中一个中有一个一个接一个。

查看代码并找到所说的位

catch (Exception e) {
}

并将其更改为

catch (Exception e) {
    e.printStackTrace();
}

帮助更容易地发现这种错误。

不幸的是我还不能发表评论,因为这不是一个具体的答案,但我检查并运行你的代码,它运行正常。 用固定的系数和度数代替表明包围都很好并且你没有(我怀疑)重新初始化内部范围中的resultArray变量。

这是您有问题的代码的直接复制/粘贴吗?

通常当我遇到这样的问题时,它与赋值无关,而是因为'resultsArray'实际上是我错误分配的2个不同的变量,但由于多态性我没有收到任何错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM