【问题标题】:How do I reverse an array in Java?如何在 Java 中反转数组?
【发布时间】:2017-10-02 00:05:56
【问题描述】:

我已经尝试过这段代码,但我不确定它为什么不起作用:

    String[] arr = {"A", "B", "C", "D", "E"};//AD
    String[] arr2 = arr;
    int last = arr.length-1;
    int first = 0;
    int size = arr.length;
    while (first < size) {
        arr2[first] = arr[last];
        last--;
        first++;
    }
    System.out.print(Arrays.toString(arr2));

有人可以帮忙吗?

【问题讨论】:

  • String[] arr2 = arr; 不进行复制。那仍然是同一个数组。
  • "String[] arr2 = arr;" - 你希望在这里发生什么哈利波特风格的魔法?
  • 只需新建一个相同长度的数组并向后填充
  • @tom omg 我忘了这不是 python,即使复制后数组也会发生变化......
  • 这不正确。如果您实际上复制它们,这些数组不会改变。

标签: java arrays string int


【解决方案1】:

这条线并没有像你想象的那样做:String[] arr2 = arr。这只是将变量arr2 指向与arr 相同的对象引用。因此,其中一个的变化会出现在另一个中,因为它们实际上是同一件事。

为了反转数组,您需要遍历数组并将复制到反转数组中。

String[] arr = { "A", "B", "C", "D", "E" };
String[] reversed = new String[arr.length];

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

【讨论】:

  • 你可以做到这一点
  • 随意添加您自己的答案,展示如何在不修改原始数组的情况下将原地数组反转为新变量。
  • 哇,我什至不知道你可以用 for 循环做到这一点,太酷了!
  • 我想用同一个变量来做这件事,你必须复制你要切换到 temp 变量的值,然后把它放回去.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 2012-09-22
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多