0

一般的な方法を利用する最初のプログラムに取り組んでいます。selectionSort(T[] a)パラメータを に設定して、メソッドが任意のオブジェクトの配列を受け取ることができるようにすることで、正しく実行していると思いました。

public class SelectionSort {
protected int[] arrayOne = {1,2,3,4,5,6,7,8};
protected double[] arrayTwo = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};
public static <T extends Comparable<T>> void selectionSort(T[] a)
{
for (int index =0; index < a.length; index++)
{
    int minElementIndex = index;
    T minElementValue = a[index];
    for (int i = index + 1; i < a.length; i++) 
    {
        if (a[i].compareTo(minElementValue) < 0)
        {
            minElementIndex = i;
            minElementValue = a[i];
        }
    }//end of inner for loop
    a[minElementIndex] = a[index];
    a[index] = minElementValue;
}//end of outer for loop
for(int indexb = 0; indexb<a.length; indexb++)
{
    System.out.printf("%d ", a[indexb]);
    if(indexb == a.length)
        System.out.println("");
}
}
public static void main(String[] args)
{
selectionSort(arrayOne);
selectionSort(arrayTwo);

}}//end of main and SelectionSort

おそらくあなたは私を助けることができます。もしそうなら、私はそれを大いに感謝します。

4

1 に答える 1

5

ジェネリックは、オブジェクトまたはクラスではないintやのようなプリミティブ型では使用できません。doubleボックス版Integer[]とを使用する必要がありDouble[]ます。

int[]特に、プリミティブとdouble[]配列の受け入れをサポートする場合は、コードを 2 回記述する必要があります。=( (私は 1 つの半回避策を考えることができますが、外部ライブラリを使用せずにはできません...)

于 2012-04-20T16:37:22.387 に答える