3

mainメソッドでコードを呼び出したかったのですが、うまくいかないようです。

public class RecursiveSelectionSort {

public static void sort(double [] list){


    sort(list, 0, list.length -1);
}
public static void sort(double [] list, int low, int high){
    if (low < high){
        int indexOfMin = low;
        double min = list[low];
        for(int i = low + 1; i <= high; i++){
            if(list[i]< min){
                min = list[i];
                indexOfMin = i;
            }
        }
        list[indexOfMin] = list[low];
        list[low] = min;

        sort(list, low + 1, high);
    }
}
public static void main(String [] args){
    double [] list = {3.0,4.0,1.0};//I tried but it doesn't work
    System.out.print(sort(list));//it doesn't go to sort(list);
}
}

呼んでいいのかな?と思いました。簡単に思えますが、本当にややこしいです。

4

5 に答える 5

5

メソッドは をsort返しますがvoid、その結果を に渡そうとしていますprint。代わりにこれを試してください:

double [] list = {3.0,4.0,1.0};
sort(list);
System.out.print(Arrays.toString(list));

配列自体はその内容を表示するためにArrays.toStringオーバーライドされないため、ユーティリティ メソッドも使用したことに注意してください。toString

于 2012-12-02T15:32:01.737 に答える
1

sortvoidメソッドであるため、その結果を印刷することはできません。sort最初に ing してから、リストを個別印刷してみてください。

于 2012-12-02T15:32:11.293 に答える
0
public class Mainn {

    public static void sort(double [] list){
            //change 1
        System.out.println("Inside sort");
        sort(list, 0, list.length -1);
    }
    public static void sort(double [] list, int low, int high){
        if (low < high){
            int indexOfMin = low;
            double min = list[low];
            for(int i = low + 1; i <= high; i++){
                if(list[i]< min){
                    min = list[i];
                    indexOfMin = i;
                }
            }
            list[indexOfMin] = list[low];
            list[low] = min;

            sort(list, low + 1, high);
        }
    }
    public static void main(String [] args){
        double [] list = {3.0,4.0,1.0};//I tried but it doesn't work

        //change 2
        sort(list);
        //return type of sort was void

        //print sorted list here
        System.out.println(Arrays.toString(list));
    }
}
于 2012-12-02T15:34:12.683 に答える
0

これを試して

public class RecursiveSelectionSort {

    public static double[] sort(double [] list){
    return sort(list, 0, list.length -1);
    }
    public static double[] sort(double [] list, int low, int high){
        if (low < high){
            int indexOfMin = low;
            double min = list[low];
            for(int i = low + 1; i <= high; i++){
                if(list[i]< min){
                    min = list[i];
                    indexOfMin = i;
                }
            }
            list[indexOfMin] = list[low];
            list[low] = min;
            return sort(list, low + 1, high);
        }
            else return list;
    }
    public static void main(String [] args){
        double [] list = {3.0,4.0,1.0};
        list = sort(list);
        for (int i = 0; i < list.length; i++)
            System.out.println(list[i]);
    }
}
于 2012-12-02T15:46:14.640 に答える
0

関数はパラメーターprintlnをサポートしていません。voidIT は、何らかの非 voidオブジェクトを入力として想定しています。しかし、あなたのソート関数は何も返しません。印刷しないのはそのためです。

于 2012-12-02T15:30:59.347 に答える