所以这是我的代码,我正在尝试计算波浪的面积:
public class coefficient {
public static void main (String[] args) {
double f[] = {14.0,18.7,9,4.1,6.7,6,6.3,8.4,4,2.9};
double T = 10;
double area = 0;
int n = 5;
double w = 2 * Math.PI / T;
for (int i = 1; i <= n; i++) {
System.out.println("n = " + i);
for (int t = 0; t < f.length; t++) {
System.out.println("T = " + t + " .......... " + f[t] * Math.cos(i*(w * t)));
area += f[t] * Math.cos(i*(w * t));
}
System.out.printf("\nTotal Area: \t\t%.2f\n", area);
System.out.printf("Calculated area: \t%.2f\n\n", (2/T)*area);
}
}
}
所以我的输出是正确的,除了我的总计算和计算区域,当i = 1时它是正确的,但在那之后它们不能给我正确的答案。
这就是事情 - 当我手动输入&#34;我&#34;:
area += f[t] * Math.cos(1*(w * t)); OR
area += f[t] * Math.cos(2*(w * t));
我得到了正确的区域!所以我觉得我的for-loop出了问题,但我不确定是什么......
所以当i = 1时,我的区域输出= 15.11。那是正确的。现在,当我在循环中i = 2时,我应该得到10.06,但我得到的是25.17。当我手动更改i时,我得到了正确的答案,因此我没有在该行中定义。但它就在它上面。
答案 0 :(得分:2)
也许是因为你没有在每次迭代后将区域设置回0。将区域声明移动到for
循环中,看看是否有效。
double f[] = {14.0,18.7,9,4.1,6.7,6,6.3,8.4,4,2.9};
double T = 10;
int n = 5;
double w = 2 * Math.PI / T;
for (int i = 1; i <= n; i++) {
double area = 0;
System.out.println("n = " + i);
for (int t = 0; t < f.length; t++) {
System.out.println("T = " + t + " .......... " + f[t] * Math.cos(i*(w * t)));
area += f[t] * Math.cos(i*(w * t));
}
System.out.printf("\nTotal Area: \t\t%.2f\n", area);
System.out.printf("Calculated area: \t%.2f\n\n", (2/T)*area);
}