返回数组无法正常工作
问题描述:
我的代码不断发出编译错误,说“局部变量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;
}
答
你需要先找到的数组的长度,然后初始化数组。你不能有int[] newi;
刚刚铺设,因为它没有初始化。我建议使用一个计数器,如果计数器超过2时,init在2
答
在这一种情况的阵列,我总是用做这样
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
}
编译器是正确的。如果'nums'为空(长度为零),那么'newi'不会被初始化。你需要提供一个初始值(如'null'或'{}')。 – Thilo
此外,您正在每个循环迭代中创建一个新数组。这看起来不正确。 – Thilo
[为什么需要初始化局部变量](http://stackoverflow.com/q/415687/4506140) –