2013-07-22 3 views
0

수십 개의 수학 함수를 C 프로그램으로 변환 한 다음 Java와 동등한 것으로 변환해야합니다. Java에서 위대하지는 않습니다. 그래서 우리는 자바에서 다음과 같은 함수를 어떻게 호출할까요? double mvfBeale(int n, double *x). 동적 배열 이동 방법 변수 xc 함수 호출에 해당하는 Java

다음은 간단한 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

무엇이 문제입니까? –

+1

귀하의 질문을 이해한다면 정상적인 어레이가 좋을 것입니다. 'double mvfBeale (int n, double [] x) {...'와 같이 선언하고'mvfBeale (n, x)'로 호출하면됩니다. (Java는 동적 배열을 가지고 있지는 않지만'ArrayList'와 같은 것들이 있습니다. 그러나 이것들은 조금 다릅니다.) – iamnotmaynard

+0

로컬 변수의 주소를 배열로 사용하는 함수입니까? 당신은 확실히 자바에서 _that_ 할 수 없습니다 ... – ApproachingDarknessFish

답변

4

Java에서는 독립 실행 형 C 함수를 클래스로 래핑해야합니다. pow는 C에서 무료 서 기능이기 때문에, 자바 버전이 Math 클래스의 멤버로 참조 할 필요가 있음을

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); 
    } 
} 

참고 : 이러한 기능 static를 선언해야합니다.

+1

그런 다음 'MathHelper.mvfBeale (4, x)'와 같은 정적 메소드를 호출합니다. –