我需要将几十个数学函数转换为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);
}
提前感谢您的指导。
答案 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
类的成员。