【问题标题】:Returning Arrays Not Working返回数组不起作用
【发布时间】:2016-01-22 04:06:09
【问题描述】:

我的代码不断遇到编译错误,提示“局部变量 newi 可能尚未初始化”,我不知道如何修复它。 任务是:给定一个任意长度的 int 数组,返回一个包含其前 2 个元素的新数组。如果数组小于长度 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;
}

【问题讨论】:

  • 编译器是对的。如果nums 为空(长度为零),则newi 将不会被初始化。您需要提供一个初始值(如null{})。
  • 另外,您在每次循环迭代中创建一个新数组。这似乎不对。

标签: arrays


【解决方案1】:

你需要先找到 in 数组的长度,然后初始化数组。你不能让int[] newi; 躺在那里,因为它没有被初始化。我建议使用计数器,如果计数器超过 2,则在 2 处初始化数组。

【讨论】:

    【解决方案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
     }
    

    【讨论】:

      猜你喜欢
      • 2012-10-20
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      相关资源
      最近更新 更多