元素没有写入java中的数组

时间:2014-01-17 02:44:01

标签: java arrays

所以我写了一个用来解决具体方程的程序,给出了一个参数int n。我的代码是:

 static double getSolution1(int n)
{
    double [] a = new double[n+1];
    a[0] =-1;
    for (int i = 1; i < n+1; i++)
    {
        a[i] = a[i-1] * ( ( 2 / ( 3 * n ) ) * Math.cos(2 * a[i-1]) );
    }
    return a[n];
}

据我所知,代码工作正常,应该填充数组的各个部分。但是,除了我告诉程序的[0] = -1之外,它没有发生,它将所有其他条目视为0,就好像它没有经历循环一样。使用调试,这是我能找到的唯一问题。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

2/3 * n会给你零,使用所有花车或双打像2.0f 3.0f

答案 1 :(得分:0)

“2 /(3 * n)”被评估为 int ;它的结果为0。

要修复,请将其更改为“2.0 /(3.0 * n)”

答案 2 :(得分:0)

正如Pulkit所说,2/3 * n产生零。为什么呢?

整数除法总是将结果舍入到最接近的整数。所以:

2 / 3 = .666
floor(.666) = 0

为了防止这种情况,您可以将f添加到2或3的末尾。这将导致操作计算为浮点而不是整数,从而避免舍入。

2f / 3f

您还可以将d添加到2或3.这将导致操作计算为double而不是整数。

2d / 3d

答案 3 :(得分:0)

表达式(2 /(3 * n)返回一个整数类型。因此对于介于1和0之间的每个数字,int类型将为0.你可以做的是让编译器将2和3视为float类型或double类型。您可以使用2.0而不是2.或3.0而不是3