2009-05-09 17 views
2

ich die folgende Fehlermeldung erhalten:Warum bekomme ich diesen Kompilierfehler in Java?

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

Wenn ich kompilieren dies:

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

    } 
} 
} 

Was mache ich falsch?

+1

Was erwarten Sie 'x' und' y', wenn Sie es aufrufen, ohne sie zu spezifizieren? –

Antwort

11

Die von Ihnen definierte Funktion "quicksort" fragt nach 3 Parametern, aber Sie stellen nur eine zur Verfügung.

6

Weil Ihre Quicksort-Funktion 3 Parameter hat, aber Ihr Anruf gibt nur einen.

Edit: zweite :(

2

sollten Ihren Code aufrufen

quicksort (tab,0,10); 

In Ihrem äußeren Calll, so dass Sie die Liste sortieren

17

Kurz nach der Zeile drucken "vor". Sie haben:

quicksort (tab); 

Die Funktion, die Sie entworfen haben, benötigt drei Argumente. Sie können entweder das Extra a hinzufügen rguments:

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

Oder eine neue Funktion hinzuzufügen, wie zum Beispiel:

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

BTW: Sie könnten nur Arrays.sort verwenden(), die eine integrierte Funktion ist. Du würdest im wirklichen Leben keine solche Funktion schreiben. (nur als Hausaufgabe)

1

Ohne zu wissen, was Sie Code in schreiben, empfehle ich dringend, eine IDE zu verwenden, wenn Sie eine bereits nicht angenommen haben. Insbesondere Eclipse für Java.

Eclipse würde die problematische Codezeile unterstreichen und Ihnen einige Vorschläge machen (zusätzlich zur Codevervollständigung). Ein Texteditor, wie JEdit nicht.

Hinweis: Mir wurde gesagt, IntelliJ ist gut, aber Sie können Eclipse-Preis (kostenlos) nicht schlagen.

Verwandte Themen