这是我的代码,我正在尝试计算波浪的面积:
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 时它们是正确的,但之后它们没有给我正确的答案。
事情是这样的 - 当我手动输入“i”时:
area += f[t] * Math.cos(1*(w * t)); OR
area += f[t] * Math.cos(2*(w * t));
我找到了正确的区域!所以我认为我的 for 循环有问题,但我不确定是什么......
所以当 i = 1 时,我的面积输出 = 15.11。那是对的。现在,当我的循环中 i = 2 时,我应该得到 10.06,但我得到的是 25.17。当我手动更改 i 时,我得到了正确的答案,因此 i 没有在该行中定义。但它在它上面的行中。
最佳答案
也许是因为每次迭代后您没有将区域设置回 0。将 Area 声明移至 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);
}
关于java - For 循环产生部分正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662578/