2009-05-09 17 views
2
私は次のエラーを取得する

:私は間違って何をやっているJavaでこのコンパイルエラーが発生するのはなぜですか?

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

    } 
} 
} 

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

は、私はこれをコンパイルすると?

+1

'x'と' y'は、指定せずに呼び出すとどうなると思いますか? –

答えて

11

あなたが定義する関数 "quicksort"は3つのパラメータを要求しますが、あなたは1つだけを提供しています。

6

あなたのクイックソート機能には3つのパラメータがありますが、あなたの呼び出しでは1つしかないためです。

編集:あなたは、リストを並べ替えることができますように、第2 :(

2

はあなたのコードは、あなたの外側calllで

quicksort (tab,0,10); 

を呼び出す必要があります

17

をジャストラインの後に印刷する "前に"。あなたは次のものを持っています:

quicksort (tab); 

あなたが設計した関数は3つの引数を必要とします。 rguments:

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

かのような新機能を追加します。ところで

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

:あなただけの機能に組み込まれているは、Arrays.sort()を使用することができます。あなたは実生活でこのような関数を書かないでしょう。 (宿題のみ)

1

コードを書いていることを知らないと、IDEを採用していない場合は、IDEを使用することを強くお勧めします。 Javaの場合は特にEclipseです。

Eclipseは、問題のコード行に下線を引いて、(コード補完の提供に加えて)いくつかの提案をします。 JEdi​​tのようなテキストエディタではありません。

注:IntelliJは良いと言われましたが、Eclipseの価格(無料)を上回ることはできません。

関連する問題