2016-01-22 109 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 
}