2014-02-27 97 views
0

所以我排序的子類中的數組繼承了類的一些方法,如交換切換索引找到最小值的方法,打印方法等,但是對於findMinimum方法,我的老師給我們提供了一個預先編制好的代碼,但是我在理解時遇到了一些麻煩,希望你們中的一些人能夠提供幫助。
陣列被用戶在主類麻煩理解這個findMinimum array方法

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沒有給出初始值插入不是它視爲空,因此不能被用於檢查循環? int minIndex如何設置爲null?

在此先感謝

回答

1

int first是函數的參數,所以,當你調用這個函數就會有一個初始值。你將與​​最小的一些陣列和初始假定指數叫它:

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; 
} 

請參閱我也跳過第一個值,因爲默認情況下它是初始最小值。

+0

只要你在function()中聲明參數它將有一個初始值? – Adamc23

+0

不會。它不會有初始值,該值將在調用函數時分配給它。 – sashkello

+0

好吧,現在更有意義了,非常感謝! – Adamc23

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