有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

初始化Double 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

共 (2) 个答案

  1. # 1 楼答案

    不幸的是,我还不能发表评论,因为这不是一个具体的答案,但我已经检查并运行了你的代码,它对我来说运行良好。用固定的系数和度数代入表示括号内的一切都很好,并且(正如我所怀疑的)没有在内部范围内重新初始化resultArray变量

    这是你的问题代码的直接复制/粘贴吗

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

  2. # 2 楼答案

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

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

    仔细检查你的代码,找到上面的代码

    catch (Exception e) {
    }
    

    把它改成

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

    以帮助更容易地捕捉此类错误