c函数调用的Java等价物
我需要将几十个数学函数转换成C程序,然后转换成Java等效程序。我对Java不是很在行,所以我们如何在Java中调用下面的函数c函数调用的Java等价物,java,c,pointers,dynamic-arrays,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]
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);
}
#包括
#包括
双mvfBeale(整数n,双*x)
{
返回功率(1.5-x[0]+x[0]*x[1],2)+
功率(2.25-x[0]+x[0]*x[1]*x[1],2)+
战力(2.625-x[0]+x[0]*战力(x[1,3),2);
}
内部主(空)
{
int n;
双x;
双重结果;
printf(“输入n:”);
scanf(“%d”和“&n”);
printf(“输入x:”);
扫描频率(“%lf”、&x);
结果=mvfBeale(n,&x);
printf(“Beale=%lf”,结果);
}
提前感谢您的指导。在Java中,您需要在类中封装独立的C函数。您需要声明这些函数
静态
:
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版本需要将其作为类的成员引用。在Java中,您需要将独立的C函数包装到类中。您需要声明这些函数
静态
:
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版本需要将其作为类的一个成员引用。问题是什么?如果我理解您的问题,普通数组就可以了。您可以像double mvfBeale(int n,double[]x){…
那样声明它,并用mvfBeale(n,x)
调用它(Java并不完全有动态数组。它确实有ArrayList
s之类的东西,但它们有点不同。)函数是否使用局部变量的地址作为数组?在java中,你当然不能这样做……用调用函数的方式x[1]
可以包含任何垃圾,或者访问它可能会使程序崩溃,或者更糟!这是未定义的行为!问题是什么?如果我理解你的问题,普通数组就可以了。你可以像double mvfBeale(int n,double[]x){…
一样声明它,并用mvfBeale(n,x)
调用它。(Java并不完全有动态数组。它确实有类似于ArrayList
s的东西,但它们有点不同。)函数是否使用局部变量的地址作为数组?在Java中,你当然不能这样做……用调用函数x[1]的方式
可以包含任何垃圾,或者访问垃圾可能会使程序崩溃,或者更糟!这是未定义的行为!然后调用静态方法,如MathHelper.mvfBeale(4,x)
然后调用静态方法,如MathHelper.mvfBeale(4,x)