2015-04-21 49 views
0

此方法返回arrayOfInts中最小元素的索引,從fromIndex開始搜索。我的returnVal以紅色加下劃線,它表示我的returnVal沒有被初始化,它告訴我我的for循環沒有被迭代。Java:for循環似乎不會在我的方法中迭代

public static int findMin(int fromIndex, Integer[] arrayOfInts) { 

    int returnVal; 
    int previousVal = arrayOfInts[fromIndex].intValue(); 

    for(int i = fromIndex; i < arrayOfInts.length; i++){ 

     if (arrayOfInts[fromIndex].intValue() <= previousVal){ 
      previousVal = arrayOfInts[fromIndex].intValue(); 
      returnVal = fromIndex; 
     } 
    } 

    return returnVal; 
} 
+0

您可以顯示調用此方法的示例數據嗎? – alainlompo

+1

編譯器無法知道'arrayOfInts.length> 0(是否會輸入循環),這就是爲什麼你會收到錯誤。你需要用'int returnVal = 0;'來初始化變量。 –

回答

1

我認爲'你'是指編譯器。如果說該變量未初始化,解決的辦法是將其初始化:

int returnVal = -1; 

這是您解釋消息錯誤的definite assignment

+0

返回值應該是一個索引,所以'-1'(N/A)可能是一個更好的默認值。 –

+0

啊,很好。編輯 – copeg

1

一個例子。如果arrayOfInts.length = 0,則for循環可能不會被輸入。而arrayOfInts[fromIndex]應該是arrayOfInts[i]

0

您必須初始化returnVal變量。你可以使用任何int值來做到這一點。這就是爲什麼編譯器給出錯誤信息的原因