0

次の行を使用して、Java でいくつかの配列をソートしようとしています。

a = sortFacade.sort(2, false, a);

ここで、「a」はすでに初期化されている int 配列です。コンパイルしようとすると、2 は int ではなく long であると言われます。(int)2 でキャストしようとしましたが、うまくいきませんでした。

ラインもやってみた

sortFacade.sort(2, false, a);

コードがコンパイルされます。

誰かがこれに対する修正を知っていますか?

編集:ターミナルに表示されるメッセージは次のとおりです。

Experimenter.java:146: incompatible types
found   : long
required: int[]
        a = sortFacade.sort(2, false, a);
                           ^

この行は、次のようなコードにあります。

public static void Experiment1()
{
   for(int size = 5000; size <= 100000; size = size + 5000)
   {
     int[] a randomArray(size, 1000); //a random array of size 'size' and values from 1 - 1000
     a = sortFacade.sort(2, false, a);
     /** This is where the error occurs. 2 specifies insertion sort (error occurs 
      with other acceptable numbers here as well,false specifies descending
      order, 'a' specifies the array to be sorted.*/
   }
}

SortFacade は、さまざまな並べ替えアルゴリズムすべてと対話するファサードです。2 は許容値であり、同じメソッド (異なるパラメーターを使用) への呼び出しは、コードの他の部分で機能します。

4

2 に答える 2

1

これは基本的にそれ自体で話します。

Experimenter.java:146: incompatible types
found   : long
required: int[]

a変数は整数の配列であると自分で言いました。上記のエラーは、メソッドが を返しますが、その値をに代入しようとしているためlong、整数の配列を返す必要があることを示しています。int[]longa

于 2012-09-26T14:08:10.473 に答える
0

ifaint[]配列の場合、受け取ったエラーsortFacade.sortは の戻り値の型がlongあり、それを配列に代入しようとしているために発生しているように見えますが、aこれは違法です。

コンパイルされる理由sortFacade.sort(2, false, a);は、何にも割り当てていないためです。あなたが言った場合:long b = sortFacade.sort(2, false, a);コンパイルして動作するはずです。

于 2012-09-26T01:21:38.800 に答える