java调用主方法数组参数(简单但容易混淆)

java调用主方法数组参数(简单但容易混淆),java,recursion,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 indexOfM

我想在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);
}
}
公共类递归选择排序{
公共静态无效排序(双[]列表){
排序(list,0,list.length-1);
}
公共静态无效排序(双[]列表,整数低位,整数高位){
如果(低<高){
int indexOfMin=低;
双最小值=列表[低];

对于(int i=low+1;i函数
println
不支持
void
参数。它需要一些非void对象作为输入。但是您的排序函数返回nothing。这就是它不打印的原因。

方法
sort
返回
void
,但您试图传递其结果进入
打印
。改为尝试以下操作:

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

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

sort
是一种
void
方法,无法打印其结果。请先尝试
sort
然后单独打印列表。

public class main{
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));
    }
}
公共静态无效排序(双[]列表){ //变化1 System.out.println(“内部排序”); 排序(list,0,list.length-1); } 公共静态无效排序(双[]列表,整数低位,整数高位){ 如果(低<高){ int indexOfMin=低; 双最小值=列表[低]; 对于(inti=low+1;i试试这个

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]);
    }
}
公共类递归选择排序{
公共静态双[]排序(双[]列表){
返回排序(list,0,list.length-1);
}
公共静态双[]排序(双[]列表,整数低位,整数高位){
如果(低<高){
int indexOfMin=低;
双最小值=列表[低];

对于(int i=low+1;我是什么让你认为排序不被调用?你试过跟踪吗?@BenMinchanJun如果你觉得满意,你需要接受一个答案。我不认为结果应该从排序中打印出来。我不认为排序应该打印任何东西。更改1只是为了证明控制是正确的进入sort()但不是必需的只是将系统保留在那里,以澄清@Ben对sort没有被调用的怀疑什么是“void参数”?我认为你不能期望void参数。