For循环产生部分正确的结果

时间:2017-12-05 21:00:41

标签: java for-loop

所以这是我的代码,我正在尝试计算波浪的面积:

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时,我得到了正确的答案,因此我没有在该行中定义。但它就在它上面。

1 个答案:

答案 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);

}