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的新手,所以也许,我的概念完全错了。
答案 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;
}