java函数返回多个变量 - 调用

时间:2018-06-07 02:59:56

标签: java function reference call

public static void delete(char[] qa, int[] aa, int[] bb) {
    if(front == -1 || front > rear) {
        System.out.println("Queue Underflow ");
        return;
    } else {
        //printf("Element deleted from queue is : %c\n", queue_array[front]);
        qa[0] = queueArray[front]; //to stoixeio pou deleted
        aa[0] = queueArray2[front2]; // x syntetagmenh del elem
        bb[0] = queueArray3[front3]; // y coordinate of del elem
        // *timegg=timeg;
        front = front + 1;
        front2 = front2 + 1;
        front3 = front3 + 1;

    }
}

我创建了上面的函数,因为我希望它返回这3个值,qa,aa,bb。当我尝试将其称为delete(qa, aa, bb);时,我得到:

method delete cannot applied to given types
required char[], int[], int[]
found char, int, int
reason actual and formal argument lists differ in lenght

调用此功能的正确方法是什么?我认为我写的是正确的,因为java中的所有内容都是引用。 我是java的新手,所以也许,我的概念完全错了。

3 个答案:

答案 0 :(得分:0)

该函数期望3个数组作为参数。您正在使用3个原始值调用该函数。因此,错误消息指示参数的实际类型与预期的不匹配。

如果您以与以下类似的方式声明了3个数组(其中'a','b','c',1,2,3被实际值替换):

char qa[] = { 'a', 'b', 'c' };
int aa[] = {1, 2, 3};
int bb[] = {1, 2, 3};

然后您的方法调用将起作用:

delete(qa, aa, bb);

请注意,您在帖子中包含的错误消息与提供的代码不匹配,因为错误消息显示预期有4个参数,因为提供的代码具有需要3个参数的函数。

答案 1 :(得分:0)

不是传递char []和int [],而是传递char和int。

这样可行。

char qa[] = new char[20];
int aa[] = new int[20];
int bb[] = new int[20];

delete(qa,aa,bb);

答案 2 :(得分:-1)

为什么不直接返回3个值的数组呢?当你只是设置第一个参数时,我只是没有看到传入3个数组的重点。

public static int[] delete()
{
   int[] arr = new int[3];

   <do whatever you want to arr>

   return arr;
}

这是java中允许的操作,因为它是内存管理的。

编辑:

如果需要在Java中返回泛型类型:

public static ArrayList delete()
{
    ArrayList ret = new ArrayList();
    ret.Add('c');  //qa
    ret.Add(0);    //aa
    ret.Add(0);    //bb
    return ret;    
}