2016-01-22 189 views
2

我的代碼不斷髮出編譯錯誤,說「局部變量newi可能沒有被初始化」,我無法弄清楚如何解決它。 任務是:給定一個任意長度的int數組,返回一個新的前兩個元素數組。如果數組小於長度2,則使用任何存在的元素。返回數組無法正常工作

我的代碼是:

public int[] frontPiece(int[] nums) { 
int[] newi; 
if (nums.length >= 2) 
{ 
for(int i = 0; i < 2; i++) 
{ 
newi = new int[2]; 
newi[i] = nums[i]; 
} 
} 
else 
{ 
for(int i = 0; i < nums.length; i++) 
{ 
newi = new int[nums.length]; 
newi[i] = nums[i]; 

} 
} 
return newi; 
} 
+1

編譯器是正確的。如果'nums'爲空(長度爲零),那麼'newi'不會被初始化。你需要提供一個初始值(如'null'或'{}')。 – Thilo

+1

此外,您正在每個循環迭代中創建一個新數組。這看起來不正確。 – Thilo

+0

[爲什麼需要初始化局部變量](http://stackoverflow.com/q/415687/4506140) –

回答

0

你需要先找到的數組的長度,然後初始化數組。你不能有int[] newi;剛剛鋪設,因爲它沒有初始化。我建議使用一個計數器,如果計數器超過2時,init在2

0

在這一種情況的陣列,我總是用做這樣

public int[] frontPiece(int[] nums) { 
    int[] newi = null; 
    //Your codes 
    return newi; 
} 

我用來檢索數組這樣

int[] returnedIntArray = frontPiece(//Some parameter); 

此後,我用它來檢查,如果null與否

if(returnedArray != null){ 
    // Do stuff if returnedArray has values, this means your method returned array with value 
}