【问题标题】:How to return a 2D array method如何返回二维数组方法
【发布时间】:2017-12-24 01:27:17
【问题描述】:

我不断收到错误消息,因为我的代码不会返回二维数组。 如何将我想要的值存储到答案中。

static int[][] findPairsWithGivenDifference(int[] arr, int k) {

   int sizeOfArray = arr.length;
   int[][] answer;
   Arrays.sort(arr);
   int first = 0, last = 1;

   while(last < sizeOfArray && first < sizeOfArray){
     if(first != last && arr[last] - arr[first] == k){

         // this is where the problem is, how do I return these values in
         // [[0, 1], [2, 5]] format
         answer = {arr[first]arr[last]};
         first++;
         last++;
   }else if(arr[last] - arr[first] < k){
       last++;
   }else{
       first++;
  }
} // end of while

return answer;
}

【问题讨论】:

  • “我不断收到错误,因为我的代码不会返回 2D 数组” - 错误是什么,“不会返回二维数组”?
  • @JimGarrison 错误在第 10 行。如果有 answer = {arr[first],arr[second]},这将不起作用。如何将第一个和第二个存储在二维数组中?谢谢。
  • 您试图在每次迭代时重新初始化数组,但您没有正确初始化它,您需要按照{{x},{y}} 的方式做一些事情,但这不包括 on初始化java要求你指定数组每个维度的范围。

标签: java arrays multidimensional-array


【解决方案1】:

正如您所提到的,您尝试以这种方式将值放入二维数组int[][] answer

 answer = {arr[first]arr[last]};

但是将值放入二维数组的正确方法是:

answer[rowNumber][coulmnNumber]=someValue;
example: answer[0][1]=5;

旁注:

  1. 在您的方法findPairsWithGivenDifference 中,您返回的是int[][]。在您当前的代码中,您返回的int[][] 可能不会初始化,因为您正在if 语句中初始化二维数组(answer)。 您需要在if 语句之外初始化返回值。一种方法是更改​​这行代码:

    int[][] 答案;

    到:

    int[][] answer= new int [wantedRowsNumbers][wantedCoulmnsNumbers];

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    相关资源
    最近更新 更多