【发布时间】:2011-11-27 21:55:06
【问题描述】:
我这辈子都无法理解为什么这段代码不起作用。我正在创建一个函数,以用户指定的频率在给定的 x 间隔内评估所有点的多项式。我的基础多项式代码与问题无关。我的问题是用我从霍纳的方法获得的值填充我的数组。
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
【问题讨论】:
-
你为什么不修正你的缩进再看一遍呢?我的猜测是括号并没有像你想象的那样做。
-
这两种解决方案都没有奏效,尽管我很欣赏及时的回答。
-
那么最后 4 个打印语句的输出是什么?你说“什么都没有发生”,但你的意思是什么?它不执行那些语句吗?它是否会抛出一个在某处被吞没的异常?您是否尝试过使用调试器单步执行以查看确切执行了哪些行?
-
您的代码是在您提供的输出之后终止,还是继续运行? (即它是否挂在某个地方?)
-
我认为,如果您发布人们可以实际运行的代码,说明您得到了什么以及预期的输出是什么,您将获得最好的帮助。尝试将您的代码缩减为可能存在错误的最小示例。
标签: java arrays loops initialization double