Multidimensional array as argument to a Java method

Hello all,
I have defined in C the following array :
char my_array[100][3];I want to pass this mutidimensional array to a Java method. How should I write my C array as an argument of the Java method ?
TIA

You cannot do that in a straight-forward fassion. The C compiler reserves 300 consecutive bytes in memory, the base address of which is accessible through my_array. The base address of each of your 100 rows can be accessed as my_array[row]. The length of each row is fixed and only known to the programmer and the compiler which uses it to calculate the row offsets.
Java has a slightly different approach to multi-dimensional arrays. Actually they are simply not implemented. What you see and use as multi-dimensional array is a composition of one array holding the references to other arrays - remember, arrays are also only Objects. This implies that the data of different rows does not at all represent a contingious memory region.
So what you need to do is to allocate an array of size 100, which holds char[]s - references to char-arrays. Then you iterate through your C array and for each row you allocate an char-array of length 3 initialized to the appropriate row. The references to those char-arrays need to be stored in the char[]-array.
Use env->NewCharArray(env, length) to create a new char[] and env->NewObjectArray(env, length, clazz, null) to create the char[][]. Accesing the elements of these arrays is described in:
http://java.sun.com/docs/books/tutorial/native1.1/implementing/array.html

Similar Messages

  • How can i pass array as argument in magento api method calling using sudzc API in iphone Native APP

    0down votefavorite
    I am implementing magento standard api method in native iphone app. I use webservice generated by sudzc. To call method I use:
    [service call:self action:@selector(callHandler:) sessionId:@" " resourcePath:@" " args:@""];
    When I used methods e.g. cart.info or product.info in which I have to pass one parameter; it gives valid response. But when I used method e.g. cart_product.add in which I have to pass an argument as value of array it gives error
    SQLSTATE[42000]: Syntax error or access violation:
        1064 You have an error in your SQL syntax;
        check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
    I have tested in SOAP UI also. There also it gives me same error. But same method works in PHP file. Even I tried by creating same soap request which I created using JavaScript but still it doesn't work.
    Can anyone help me to pass array as a parameter using sudzc api to call magento web services?

    There is an error in your SQL.

  • Urgent please ! How to invoke java method with diffrent argument types?

    Hi,
    I am new to JNI.
    I had gone through documentation but it is not of much help.
    Can any one help me out how to invoke the below java method,
    // Java class file
    public class JavaClassFile
    public int myJavaMethod(String[] strArray, MyClass[] myClassArray, long time, int[] ids)
    // implementation of method
    return 0;
    // C++ file with Invokation API and invokes the myJavaMethod Java method
    int main()
    jclass cls_str = env->FindClass("java/lang/String");
    jclass cls_MyClass = env->FindClass("MyClass");
    long myLong = 2332323232;
    int intArray[] = {232, 323, 32, 77 };
    jclass cls_JavaClassFile = env->FindClass("JavaClassFile");
    jmethodID mid_myJavaMethod = env->GetMethodID( cls_JavaClassFile, "myJavaMethod", "([Ljava/lang/String;[LMyClass;J[I)I");
    // invoking the java method
    //jint returnValue = env->CallIntMethod( cls_JavaClassFile, mid_myJavaMethod, stringArray, myClassArray, myLong, intArray ); --- (1)
    //jint returnValue = env->CallIntMethodA( cls_JavaClassFile, mid_myJavaMethod, ...........); --- (2)
    //jint returnValue = env->CallIntMethodV( cls_JavaClassFile, mid_myJavaMethod, ...........); --- (3)
    Can any one tell me what is the correct way of invoking the above Java method of (1), (2) and (3) and how ?
    The statement (1) is compilable but throws error at runtime, why ?
    How can I use statements (2) and (3) over here ?
    Thanks for any sort help.
    warm and best regards.

    You are missing some steps.
    When you invoke a java method from C++, the parameters have to be java parameters, no C++ parameters.
    For example, your code appears to me as thogh it is trying to pass a (C++) array of ints into a java method. No can do.
    You have to construct a java in array and fill it in with values.
    Here's a code snippet:
    jintArray intArray = env->NewIntArray(10); // Ten elments
    There are also jni functions for getting and setting array "regions".
    If you are going to really do this stuff, I suggest a resource:
    essential JNI by Rob Gordon
    There is a chapter devoted to arrays and strings.

  • How to call java method having array as argument from c++ ?

    Hello sir,
    how to call java method having array as arguments from c++;
    here is java code which is called from c++
    class PQR {
         public void xyz(int[] ia) {
         System.out.println("hi");
              for (int i = 0; i < ia.length; i++)
                   System.out.println(ia);
    suppose all jvm invocation is done...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    For someone well versed in java, C++ and JNI although tedious that should be obvious.
    For someone not well versed in all three it is going to be very difficult.
    Even for someone that does have knowledge in all of those areas coming up with a C++ interface that reflects that functionality in a dynamic way such that anyone is will to use it is going to be quite an adventure.
    At any rate to start building it you do exactly the same thing that you would in java.
    1. Extract everything in the jar via the zip package
    2. For each found instance extract all of the methods, return types, parameters, etc and build a description tree for each class.
    Doing all of that in C++ is going to take a LOT of code. If someone wanted an estimate from me it would take me 6 months to do it. And before I would even attempt it I would get them to explain to me in detail exactly how they thought they were going to use it when I was done because I can't see any reasonable way to do that.
    I left out the description tree itself. I suppose you could duplicate the entire reflection api in C++.
    Now perhaps if it was much, much more constrained, like to only those classes that implement a single interface then that would be more reasonable.

  • Rhino calling overloaded Java methods with Array parameters

    Has anyone had any problems writing JavaScript code that calls overloaded Java methods?
    I have two Java defined methods that differ in the arguments, one takes a string the other takes an array of strings. The problem is calling Java methods within the JavaScript always calls the method with the String argument...
    /* Java Code Here */
    public void function(String s) { /* Function A */ }
    public void function(String[] sa) { /* Function B */ }
    /* JavaScript  Code Here */
    param = java.lang.reflect.Array.newInstance(java.lang.String, 2);
    param[0] = "test";
    param[1] = "test2";
    stringParam = "test3";
    /* Both function calls below end up calling the Function A from above */
    function(param);
    function(stringParam);PS...in case you're not familiar with Rhino,
    It is a mozilla package that embeds a JavaScript interpreter within a Java application...
    http://www.mozilla.org/rhino/

    haha...I can't even find my other thread :(
    Sorry about the double post...I'll go look for my other thread now

  • Question on System.arraycopy method and multidimensional array

    I'm trying to copy from single dimensional to multidimensional array using System.arraycopy method. The following is my problem.
    1) I need to specify the index of the multidimensional array while copying. Can I do that ? If yes , how???
    eg ; int a[] = new int[3];
    int b[] = new int[3][2]; I need to copy from a to b
    I tired the following and I'm getting an error.
    System.arraycopy(a,0,b[][1],0,3);
    How Can I achieve the above?? PLease Help --------------

    Java doesn't have multidimensional arrays. When you see an int[][] it's an array of arrays of ints. The arrays of ints might have different lengths like this one:int[][] arr =
    {{1,2,3,4},
    {1,2,3},
    {1,2},
    {1}
    };Do I need to say that arraycopy as you see it would fail in this case?
    If you know what kind of arrays you'll have you can simply implement your own arraycopy method (but it will not be as effecient as System.arraycopy) with a simple for-loop.

  • Using Arrays in external Java Methods

    Hello,
    I want to write an external Java Method. The method should access an Attribute. The Attribute should store an array of strings (e.g. {"value1", "value2", "..."}).
    Is there a possibility to store a stringarray in an Attribute? How could I access the different values in the external Java Method?
    Thanks for your help.
    Benedikt

    Benedikt,
    I don't think you can.
    But why don't you use a java.util.StringTokenizer object instead ?
    If I look in the workflow db, a value of an attribute is defined as varchar2(4000), so that should give you enough space.
    Grtz,
    Chris.

  • Reading Java multidimensional array in C

    Hello friends.
    Have searched the forum, but haven's found the answer.
    I need to access a Java two dimensional array from C ( boolean[][] a; ).
    Here's the code in C:
      jbooleanArray aArray; 
      jboolean **a;   
      fid=(*env)->GetFieldID(env, cls, "a", "[[Z"); 
      if (fid==0) { return; }  aArray=(*env)->GetObjectField(env, jobj, fid); 
      len=(*env)->GetArrayLength(env, aArray); 
      a=(jboolean **) (*env)->GetBooleanArrayElements(env, aArray, 0);Array lengths are correctly read separately. When I debug array in C it fails half-way or so:
      for (i=0;i<arows;i++)   
        for (j=0;j<acols;j++)      
          printf("a[%d][%d]=%u ",i,j,a<i>[j]);Error: An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x189217B4
    Is it the correct way to read multidimensional array? Or could it be the problem with jboolean type?
    Kev

    Thank you for the idea to test an multidimensional array.
    I testet the following code with C++ and changed it afterwords (untestet) into the syntax of C. Hope it runs.
    boolean[][] is an array of Objects, this Objects are arrays of boolean!
    #include "nativetest_BooleanArrayTest.h"
    #include <stdio.h>
    // without "if(blabla == 0) return;" etc.
    JNIEXPORT void JNICALL Java_nativetest_BooleanArrayTest_test
      (JNIEnv * env, jobject obj)
       jsize i, j;
       jclass clazz = (*env)->GetObjectClass(env, obj);
       jfieldID fid = (*env)->GetFieldID(env, clazz, "b", "[[Z");
       jobject jobj = (*env)->GetObjectField(env, obj, fid);
       jobjectArray jarrRows = (jobjectArray)jobj;
       // Get elements of array
       jsize numberOfRows = (*env)->GetArrayLength(env, jarrRows);
       jboolean** carr = new jboolean*[numberOfRows];
       jbooleanArray* jrows = new jbooleanArray[numberOfRows];
       for (i = 0; i < numberOfRows; ++i) {
          jrows[i] = (*env)->GetObjectArrayElement(env, jarrRows, i);
          carr[i]  = (*env)->GetBooleanArrayElements(env, jrows, 0);
    jsize numberOfColumns = (*env)->GetArrayLength(env, jrows[0]);
    // test
    for (i = 0; i < numberOfRows; ++i) {
    for (j = 0; j < numberOfColumns; ++j) {
    // printf ...
    // release
    for (i = 0; i < numberOfRows; ++i) {
    (*env)->ReleaseBooleanArrayElements(env, jrows[i], carr[i], 0);
    delete[] jrows;
    delete[] carr;

  • Call java method having array as returntype

    hello everybody i have a problem regarding Calling a java method (which returning an array ) from c++
    eg. MY JAVA METHOD CODE IS HERE
    class PQR {
         public int[] xyz() {
         int[] anArray;            
              anArray = new int[4];  
              anArray[0] = 100;
              anArray[1] = 200;
              anArray[2] = 300;
              anArray[3] = 400;
              anArray[4] = 500;
         System.out.println(anArray[1]);
    return anArray;how should i call it ? (*BOTH "WORKS" FINE TO CALL METHOD* )
    1. As Object method ? (as in java arrays are objects )
         jobject obj;
         obj = (env_ptr)->AllocObject(classID);     // this will create an object.
       jvalue  returnValue;
         returnValue->l = (env_ptr)->CallObjectMethodV(obj, method_id, arglist);2. or
    jobject obj;
         obj = (env_ptr)->AllocObject(classID);     // this will create an object.
       jvalue  returnValue;
         returnValue->l = (env_ptr)->CallIntMethodV(obj, method_id, arglist);At the end how i will get those array elements in c++ ?

    here i tried this thing but didnt work out..please help me.....its urgent..
    jintArray obj ; //  object of jintArray
         invoke.invoke_class("PQR", "xyz","()[I",&ret,&obj);   //  *here i just called that method  sending classname methodname signature & taking reference of returnedvalue and variable arg list if required *
          int len = (int)(invoke.env_ptr->GetArrayLength(obj));      
    jint* jrdata = new jint[len];
    invoke.env_ptr->GetIntArrayRegion((jintArray)obj, (jsize)0, (jsize)len, jrdata);
    int* data= new int[len];
      for (int i=0;i<len;i++) {
        data[i] = jrdata;
         printf("%d ",data[i]); // prints 0 0 0 0 0 0 0 0 0 0 0 why ? :( ?
         printf("bye");
         return data;

  • Order of arguments while calling a Java method from C

    Hi
    are there any rules to order the transferred arguments ?
    I wanted to transfer a native window event from C to Java and if the called
    java method is declared like this: (int, long, int) (IJI)V
    public static void nativeMouseButtonDownCallback(int wParam, long lParam, int which)
    the value of 'which' is not correct (always the same independent from what I set it to in the C function)
    If I declare the java method like this: (int, int, long) (IIJ)V
    public static void nativeMouseButtonDownCallback(int which, int wParam, long lParam)
    everything is fine.
    Any information appreciated !
    Bye Mark

    Thanks for your reply !
    Initially I also thought that the set of the value could be wrong and so
    I used a printf statement in C to monitor the transferred value.
    And still: the value I put in was different from what I got in java.
    After this I put in simple numbers like 1,2,3 and in java I still got
    the same wrong value.(guess max signed int 21474836..)
    I really replaced the dll and class files and restarted the IDE.
    The problem got solved by changing the order of the long an int.
    Bye Mark

  • Need Help with command line arguments for a class method

    Hey guys,
    I'm fairly new to programming in java.
    I want to a write a class method that adds up its command line arguments which are numbers. For example, if the input was .... 5 2 3....then the output would be 10.
    I have been told to use the Convert to convert a string to a double. I'm ok for writing the class method but I have no idea how to use Convert and why I need it in the method.
    Can anybody help please?

    Hey guys,
    I'm fairly new to programming in java.
    I want to a write a class method that adds up its
    command line arguments which are numbers. For
    example, if the input was .... 5 2 3....then the
    output would be 10.Okay. So you would receive the numbers to add as the String[] argument to a main method. The steps are simple:
    1) declare a variable for the count
    2) for each String in the array:
    2.1) extract the value as a double
    2.2) add this to the count
    3) output the resulting count
    I have been told to use the Convert to convert a
    string to a double.
    I'm ok for writing the class
    method but I have no idea how to use ConvertThere is no class Convert in the Java API.
    and why
    I need it in the method. Do you understand you need to somehow convert each String to a double (step 2.1)? Since Convert is unknown to me, maybe you should just take a look at class Double. It can help you do step 2.1, the rest should be trivial enough.
    http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Double.html
    Give it a go and feel free to post back with a specific problem you are having, accurately described if you please :-)

  • How to pass a file into a java method

    I am trying to pass a file into a java method so I can read the file from inside the method. How can I do this? I am confident passing int, char, arrays etc into methods as I know how to identify them in a methods signature but I have no idea how to decalre a file in a mthods signature. Any ideas please ?
    Thanks

    Hi,
    Just go thru the URL,
    http://www6.software.ibm.com/devtools/news1001/art24.htm#toc2
    I hope you will get a fair understanding of 'what is pass by reference/value'.
    You can pass Object reference as an argument.
    What Pablo Lucien had written is right. But the ideal situation is if you are not modifying the
    file in the calling method, then you can pass the String (file name) as an argument to the called method.
    Sudha

  • Java method call from c passing string more info

    I am trying to call a java method from c passing a String as an argument.
    my C code is as follows.
    //Initalise jstring and class (to recieve String)
    jstring textp;
    jclass texts = (*env)->GetObjectClass(env, obj);
    jmethodID text = (*env)->GetMethodID(env, texts, "texture", "([Ljava/lang/String;)V");
    //Create a new jstring from the char* texturePath (in textures)
    //call the java method with the jstring
    textp = (*env)->NewStringUTF(env,ret.textures->texturePath);
    (*env)->CallVoidMethod(env, obj, text,textp);
    //java code
    // texture which recieves a string
    public void texture(String texturePath){
    The error I get is as follows:
    SIGSEGV 11 segmentation violation
    si_signo [11]: SEGV
    si_errno [0]:
    si_code [1]: SEGV_MAPERR [addr: 0xc]
    stackpointer=FFBED790
    "Screen Updater" (TID:0x4f9060, sys_thread_t:0x4f8f98, state:CW, thread_t: t@11, threadID:0xf2d31d78, stack_bottom:0xf2d32000, stack_size:0x20000) prio=4
    [1] java.lang.Object.wait(Object.java:424)
    [2] sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:78)
    [3] sun.awt.ScreenUpdater.run(ScreenUpdater.java:98)
    "AWT-Motif" (TID:0x40be50, sys_thread_t:0x40bd88, state:R, thread_t: t@10, threadID:0xf2d71d78, stack_bottom:0xf2d72000, stack_size:0x20000) prio=5
    [1] sun.awt.motif.MToolkit.run(Native Method)
    [2] java.lang.Thread.run(Thread.java:479)
    "SunToolkit.PostEventQueue-0" (TID:0x431950, sys_thread_t:0x431888, state:CW, thread_t: t@9, threadID:0xf2e71d78, stack_bottom:0xf2e72000, stack_size:0x20000) prio=5
    [1] java.lang.Object.wait(Object.java:424)
    [2] sun.awt.PostEventQueue.run(SunToolkit.java:407)
    "AWT-EventQueue-0" (TID:0x430ea8, sys_thread_t:0x430de0, state:CW, thread_t: t@8, threadID:0xf3071d78, stack_bottom:0xf3072000, stack_size:0x20000) prio=6
    [1] java.lang.Object.wait(Object.java:424)
    [2] java.awt.EventQueue.getNextEvent(EventQueue.java:212)
    [3] java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:100)
    [4] java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:91)
    [5] java.awt.EventDispatchThread.run(EventDispatchThread.java:83)
    Exiting Thread (sys_thread_t:0xff343db0) : no stack
    "Finalizer" (TID:0x154e98, sys_thread_t:0x154dd0, state:CW, thread_t: t@6, threadID:0xfe391d78, stack_bottom:0xfe392000, stack_size:0x20000) prio=8
    [1] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:146)
    [2] java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:168)
    [3] java.lang.ref.Finalizer$FinalizerWorker$FinalizerThread.run(Finalizer.java:124)
    "Reference Handler" (TID:0x1506a0, sys_thread_t:0x1505d8, state:CW, thread_t: t@5, threadID:0xfe3c1d78, stack_bottom:0xfe3c2000, stack_size:0x20000) prio=10
    [1] java.lang.Object.wait(Object.java:424)
    [2] java.lang.ref.Reference$ReferenceHandler.run(Reference.java:130)
    "Signal dispatcher" (TID:0x13d180, sys_thread_t:0x13d0b8, state:MW, thread_t: t@4, threadID:0xfe3f1d78, stack_bottom:0xfe3f2000, stack_size:0x20000) prio=10
    "main" (TID:0x38918, sys_thread_t:0x38850, state:R, thread_t: t@1, threadID:0x25228, stack_bottom:0xffbf0000, stack_size:0x800000) prio=5 *current thread*
    [1] loader.Callbacks.nativeMethod(Native Method)
    [2] loader.Callbacks.main(Callbacks.java:184)
    [3] graphics.GR_MakeTrack.init(GR_MakeTrack.java:60)
    [4] graphics.GR_MakeTrack.main2(GR_MakeTrack.java:49)
    [5] graphics.GR_MakeTrack.main(GR_MakeTrack.java:41)
    [6] control.GE_main.GE_main1(GE_main.java:87)
    [7] control.GE_main.main(GE_main.java:66)
    gmake: *** [run] Abort (core dumped)

    I am trying to call a java method from c passing a
    String as an argument.
    my C code is as follows.
    //Initalise jstring and class (to recieve String)
    jstring textp;
    jclass texts = (*env)->GetObjectClass(env, obj);
    jmethodID text = (*env)->GetMethodID(env, texts,
    "texture", "([Ljava/lang/String;)V");
    Hi Pete,
    your problem is that the method texture you are trying to find does not exist. If you look carefully at your declaration of the method signature in the GetMethodID call you will see "([Ljava/lang/String;)V" which is trying to find a method that accepts a String array as its parameter. Remove the [ from the method signature and it should work ok. You might want to test text (jmethodID) for NULL or 0 before trying to call it as well.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • JNI multidimensional Array and OpenCV

    Hello everybody,
    my first post, so lets go..
    At the moment I am writing my thesis in the filed of automatic image classification. The project is written in Java, but I wanna use the OpenCV library from Intel (http://sourceforge.net/projects/opencvlibrary/) for facedetection.
    So far I managed to call the native method from Java. What I do I parse the path of the image to be analyzed as a string to my C++ programm. The faces are being detected and written into a so called CvSeq (http://www.comp.leeds.ac.uk/vision/opencv/opencvref_cxcore.htm#cxcore_ds_sequences) which holds the coordinates of the rectangles surrounding the found faces. Until now I can only call cvSeq->total which gives me the total number of faces as ints. That integer I return to my java api.
    What I don't know is, how to return a multidimensional array (2 dimensions) where the first dim contains the path as a string to the file and the second dimension 3 integers for x,y coordinates and the lenght of each rectangle.
    Or better, I might know how to return that Array, but not how to create it.
    I know this is somewht OpenCV specific, but maybe someone knows anything. Any little help would be greatly appreciated. Thanks a lot!!!!
    Regards
    Carsten
    attached: JNI source code
    /////////////////////////////////////////// source code ///////////////////////////////////////////////
    #include "cv.h"
    #include "highgui.h"
    #include "cxcore.h"
    #include "cxtypes.h"
    #include "cvaux.h"
    #include "org_kimm_media_image_data_JNIOpenCV.h"
    #include <stdio.h>
    JNIEXPORT jint JNICALL
    Java_org_kimm_media_image_data_JNIOpenCV_getFaces(JNIEnv *env, jobject object, jstring path)
    //declarations
    CvHaarClassifierCascade *pCascade = 0;
    CvMemStorage *pStorage = 0;
    CvSeq *pFaceRectSeq;
    int scale=1;
    jobjectArray recPoints;
    const char *str = env->GetStringUTFChars(path, 0);
    //initializations
    IplImage* pInpImg = cvLoadImage(str, CV_LOAD_IMAGE_COLOR);
    IplImage* small_image = pInpImg;
    pStorage = cvCreateMemStorage(0);
    pCascade = (CvHaarClassifierCascade *)cvLoad
         (("C:/OpenCV/data/haarcascades/haarcascade_frontalface_default.xml"),0, 0, 0 );
    //validaste that everything initilized properly
    if( !pInpImg || !pStorage || !pCascade)
         printf("Initialization failed: %s \n",
              (!pInpImg) ? "didn't load image file" :
              (!pCascade) ? "didn't load Haar Cascade --"
                   "make sure Path is correct" :
              "failed to allocate memory for data storage");
         exit(-1);
    //performance boost through reducing image size by factor 2          
              small_image = cvCreateImage( cvSize(pInpImg->width/2,pInpImg->height/2), IPL_DEPTH_8U, 3 );
    cvPyrDown( pInpImg, small_image, CV_GAUSSIAN_5x5 );
    scale = 2;
    //detect faces in image
    pFaceRectSeq = cvHaarDetectObjects(small_image, pCascade, pStorage,
                                            1.1,                                        //increase search scale by 10% each pass
                                            6,                                        //drop group of fewer than three detections
                                            CV_HAAR_DO_CANNY_PRUNING,          //skip regions unlikely to contain faces
                                                 cvSize(50,50));                         //use XML default for smallest search scale
    //initialize array for location of the faces (HERE IS WHERE I GET INTO TROUBLE!!!!!)
    int x = pFaceRectSeq->total;
    jclass intArrCls = env->FindClass ( "[I" ) ;
    recPoints = env->NewObjectArray ( x, intArrCls, NULL ) ;
    //for(int j = 0; j <= x; j++) {
    //   recPoints[j] = (jintArray)env->NewIntArray(3);
    for(int i=0;i<(pFaceRectSeq ? pFaceRectSeq->total:0); i++)
                                       CvRect* r = (CvRect*)cvGetSeqElem(pFaceRectSeq, i);
                                       CvPoint pt1 = {(r->x)*scale, (r->y)*scale};
                                       CvPoint pt2 = {(r->x + r->width)*scale, (r->y + r->height)*scale};
    //env->SetObjectArrayElement(recPoints,i, pt1.x);
    return pFaceRectSeq->total;
    }

    Any Java array you can consider like one-dimensional array of arrays n-1 dimension. For example, you have a 3 dim. array of objects:
    Object[][][] arr = new Object[1][2][6]; It can be considered as a set of one-dimensional arrays:
    ==========================================
    |  dim   |           Type
    ==========================================
      0          1 element, an array of type �[[Ljava/lang/Object;�
      1          1 x 2 elements , an arrays of type �[Ljava/lang/Object;�
    So you can convert three-dimensional array to one-dimensional array like in C++:
    |�[Ljava/lang/Object;� | �[Ljava/lang/Object;� | �[Ljava/lang/Object;�
         6 objects                 6 objects                 6 objects

  • Multidimensional Array Sort

    Please help. I am very new to java and trying to build a multidimensional array. I have two variables 1)item_name and 2)item_value. These are values that I obtain by looping through a database result set. I need to build and array that can hold these variables. Once the multidimensional array is built I need to be able to sort it by item value.
    For example I would like to do something like this:
    while (rs.next)
    array.name = item_name
    array.value = item_value
    end
    array.sort(value)
    Thanks for any help!

    Don't use a multidimensional array. Use an array of objects, where the objects are of a class that you define. It might be something as simple as class Item that just has two fields--name and value--and their getters and setters. Or maybe just getters if you want the class to be immutable.
    Have the class implement Comparable and sort on value.
    If you sometimes want to sort on value and sometimes on name, then you'll need to either define two Comparators (one for name, one for value) or make the class Comparable on whichever is the more "natural" ordering and define a Comparator for the other one.
    Either put them in an array and use one of the java.util.Arrays.sort methods to sort them, or put them in a List (java.util.LinkedList or java.util.ArrayList) and use Collections.sort to sort them.

Maybe you are looking for

  • Flex Resources

    Flex 2.x Resources Flex sites/blogs: Adobe: http://www.adobe.com/devnet/flex/ DEVNET - start here! http://www.adobe.com/products/flex/productinfo/faq/ http://www.adobe.com/cfusion/communityengine/index.cfm?event=homepage&productId=2 http://blogs.adob

  • My personal domain name takes me to another site. Need Help.

    I created 2 sites in iweb - one for myself and one for a friend. My personal domain is on my dot mac account. My friend's is on her dot mac account. When I type my URL into my browser it goes to my friend's site. My domain is: http://www.eggstardesig

  • Error in hr_employee_api.hire_into_job

    Hi Friends, I am new to Oracle HRMS..I am trying to convert EX-CWK to EMP using hr_employee_api.hire_into_job. but i am getting the following error. error : Person type must be either APL or APL_EX_APL This is the parameters i passed in code : p_effe

  • Report Progress: RWRBE60 - Application Error

    Hi all, I got the following error message when generating a report calling from Oracle Form & the application is hang afterwards. Report Progress: RWRBE60 - Application Error The exception Integer division by zero. (0xc0000094) occurred in the applic

  • Can R12.1.3 and R11.5.10 be installed on the same server?

    Hello there, We are currently running Oracle eBiz R11.5.10, and would like to install the latest version R12.1.3 for testing purposes. Can R12.1.3 be installed on the same server (for both database and application tiers) as for R11.5.10? Any pitfalls