为什么我在Java中遇到这个编译错误?

时间:2009-05-09 13:39:45

标签: java sorting compiler-errors

我收到以下错误:

quicksort(int[],int,int)cannot be applied to(int[])

编译时:

import java.util.*;

public class Sort {

public static void main(String[] args){

Random rand = new Random();
int[] tab = new int[10];

for(int i = 0; i < tab.length; i++) {
tab[i] = rand.nextInt(100);

System.out.println("Before: ");
show(tab);

quicksort (tab);
System.out.println("After: ");
show(tab);
  }
}
static void quicksort(int tab[], int x, int y) {

        int i,j,v,temp;

        i=x;
        j=y;
        v=tab[(x+y) / 2];
        do {
            while (tab[i]<v) 
                i++;
            while (v<tab[j]) 
                j--;
            if (i<=j) {
                temp=tab[i];
                tab[i]=tab[j];
                tab[j]=temp;
                i++;
                j--;
            }
        }
        while (i<=j);
        if (x<j) 
            quicksort(tab,x,j);
        if (i<y) 
            quicksort(tab,i,y);
    }


static void show (int tab[]) {
for (int i = 0; i <tab.length; i++) {
System.out.println(tab[i]);

  }
 }
}

我做错了什么?

6 个答案:

答案 0 :(得分:17)

在“之前”打印出来的行之后,你有:

quicksort (tab);

您设计的功能需要三个参数。您可以添加额外的参数:

quicksort (tab, 0, tab.length - 1)

或添加新功能,例如:

public quicksort(int[]) {
  quicksort(tab, 0, tab.length - 1);
}

答案 1 :(得分:11)

你定义的函数“quicksort”要求3个参数,但你只提供一个参数。

答案 2 :(得分:6)

因为你的快速排序功能有3个参数,但你的通话只有一个参数。

编辑:第二:(

答案 3 :(得分:2)

你的代码应该调用

quicksort (tab,0,10);

在你的外部监听中,你可以对列表进行排序。

答案 4 :(得分:1)

如果您还没有采用IDE,我强烈建议您使用IDE。尤其是Java Eclipse

Eclipse会强调有问题的代码行并向您提出一些建议(除了提供代码完成)。像JEdit这样的文本编辑器没有。

注意:我被告知IntelliJ很好,但你无法击败Eclipse的价格(免费)。

答案 5 :(得分:0)

BTW:你可以使用Arrays.sort()这是一个内置函数。在现实生活中你不会写这样的函数。 (仅作为家庭作业)