【问题标题】:Remove 0 Index of every inner array of 2D Array删除 2D 数组的每个内部数组的 0 索引
【发布时间】:2019-11-25 22:51:05
【问题描述】:

我试图解决这个问题,但我没有更进一步。 我有一个 2D int Array 并想像这样删除每个索引的第一个索引: {{1,2}, {2,3,4}} -> {{2}, {3,4}}

我处理了这段代码,但它并没有改变任何东西。

int[][] arr = {{1,2},{2,3,4}};

    for(int[] x : arr) {
        int[] newArr = new int[x.length -1];
        for (int i = 1; i < x.length; i++) {
            newArr[i-1] = x[i];
        }

        x = newArr;
    }

感谢您的帮助。

【问题讨论】:

  • 不应该是{{2}, {3,4}}吗?
  • 提示 1: 使用 Arrays.copyOfRange(...) --- 提示 2: 不要使用增强的 for 循环,因为你不能以这种方式更新arr
  • 是的,我在输出中犯了一个错误。提示 2 效果很好。

标签: java arrays indexing 2d


【解决方案1】:

你可以这样做:

public class Main {
    public static void main(String[] args) {
        int[][] arr = { { 1, 2 }, { 2, 3, 4 } };

        for (int i = 0; i < arr.length; i++) {
            int[] newArr = new int[arr[i].length - 1];
            for (int j = 1; j < arr[i].length; j++) {
                newArr[j - 1] = arr[i][j];
            }
            arr[i] = newArr;
        }

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

输出:

2 
3 4 

【讨论】:

    【解决方案2】:

    你确定它不起作用吗?我跑了这个,它对我有用。也许您在最后将错误的数组分配给您希望它去的数组?确保在循环之后将您关心的任何数组分配给 newArr。

    【讨论】:

      【解决方案3】:

      不要使用增强的for循环,而使用Arrays.copyOfRange(...)

      int[][] arr = {{1,2},{2,3,4}};
      for (int i = 0; i < arr.length; i++)
          arr[i] = Arrays.copyOfRange(arr[i], 1, arr[i].length);
      System.out.println(Arrays.deepToString(arr));
      

      输出

      [[2], [3, 4]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        • 1970-01-01
        • 2022-07-08
        • 1970-01-01
        • 2021-08-21
        • 2021-08-26
        • 1970-01-01
        相关资源
        最近更新 更多