初始化一个双精度数组java

时间:2011-11-27 21:55:06

标签: java arrays loops initialization double

我不能为我的生活理解为什么这段代码不起作用。我正在创建一个函数来评估给定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

2 个答案:

答案 0 :(得分:3)

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

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

查看代码并找到说

的位
catch (Exception e) {
}

并将其更改为

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

帮助更轻松地发现此类错误。

答案 1 :(得分:1)

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

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

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