Java相当于c函数调用

时间:2013-07-22 17:12:44

标签: java c pointers dynamic-arrays

我需要将几十个数学函数转换为C程序,然后转换为Java等价物。我在Java中不是很好,所以我们如何在Java中调用以下函数double mvfBeale(int n, double *x)。动态数组是变量x

的方法

以下是c中的一个简单程序,我需要Java等效的入门。

#include<stdio.h>
#include<math.h>


double mvfBeale(int n, double *x)
{
    return pow(1.5 - x[0] + x[0]*x[1], 2) +
    pow(2.25 - x[0] + x[0] * x[1]*x[1], 2) +
    pow(2.625 - x[0] + x[0] * pow(x[1], 3), 2);
}


int main(void)
{
    int n;
    double x;
    double result;

    printf("Enter n: ");
    scanf("%d", &n);

    printf("Enter x: ");
    scanf("%lf", &x);

    result = mvfBeale(n, &x);
    printf("Beale = %lf", result);

}

提前感谢您的指导。

1 个答案:

答案 0 :(得分:4)

在Java中,您需要在一个类中包装独立的C函数。您需要声明这些函数static

public class MathHelper {
    public static double mvfBeale(int n, double[] x)
    {
        return Math.pow(1.5 - x[0] + x[0]*x[1], 2) +
        Math.pow(2.25 - x[0] + x[0] * x[1]*x[1], 2) +
        Math.pow(2.625 - x[0] + x[0] * Math.pow(x[1], 3), 2);
    }
}

请注意,由于pow是C中的独立函数,因此其Java版本需要将其称为Math类的成员。