java调用main方法数组参数(容易但令人困惑)

时间:2012-12-02 15:27:18

标签: java recursion

我想在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);
}
}

我想知道我是否可以打电话给它。这似乎很容易,但确实令人困惑。

5 个答案:

答案 0 :(得分:5)

方法sort会返回void,但您尝试将其结果传递给print。试试这个:

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

注意我还使用了实用方法Arrays.toString,这是必要的,因为数组本身不会覆盖toString来显示其内容。

答案 1 :(得分:1)

sort是一种void方法,您无法打印其结果。首先尝试sort,然后然后分别打印列表。

答案 2 :(得分:0)

println函数不支持void个参数。 IT期望一些非void 对象作为输入。但是你的排序函数返回没有。这就是它不打印的原因。

答案 3 :(得分: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));
    }
}

答案 4 :(得分: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]);
    }
}