无法理解这个findMinimum数组方法

时间:2014-02-27 02:53:54

标签: java arrays

所以我在子类中对数组进行排序,这些子类从类继承了几个方法,包括交换到切换索引,找到最小值的方法,打印方法等,但是对于findMinimum方法,我的老师为我们提供了帮助使用预先制作的代码,但我在理解它时有点麻烦,希望你们中的一些人能够提供帮助。
用户在主类

中插入一个数组
public int findMinimum(int[] array, int first){
    int minIndex = first;
    for(int i =0; i<array.length; i++){
        if(array[i]<array[minIndex]){
            minIndex = i;
        }
    }
    return minIndex;
}

我很难理解是因为int first没有给出初始值是不是它被认为是null因此不能用于检查循环? int minIndex如何设置为null?

提前致谢

2 个答案:

答案 0 :(得分:1)

int first是一个函数参数,因此在调用此函数时它将具有初始值。您将使用一些数组和初始假设的min:

来调用它
myMinimum = findMinimum(myArray, 0)

在这种情况下,它实际上没有多大意义,因为函数的最小值不依赖于此参数。我把它重写为:

public int findMinimum(int[] array){
    int minIndex = 0;
    for(int i = 1; i < array.length; i++){
        if(array[i] < array[minIndex]){
            minIndex = i;
        }
    }
    return minIndex;
}

请参阅,我也跳过第一个值,因为默认情况下它是初始最小值。

答案 1 :(得分:0)

当您在代码中调用此方法时,您会为arrayfirst提供初始值,例如此...

public static void main(String[] args){
    int[] myArray = new int[]{2,5,10,30};
    int theMinimum = findMinimum(myArray,5);
    }

变量first将始终具有值,它仅取决于方法调用所传递的内容。在上面的示例中,first的值为5

也许这就是你感到困惑的地方......你的代码是一种方法 - 它只会在你的代码中调用方法时运行,如上例所示。如果您不调用方法findMinimum(),则永远不会运行此代码。例外情况是你的main()方法,这是一种特殊的方法,我将Java JVM理解为入口点,即运行的第一个代码。需要调用所有其他方法,并传递它所需的值(在这种情况下,传递arrayfirst的值)