【问题标题】:How to reverse an array without a loop or creating new array [closed]如何在没有循环的情况下反转数组或创建新数组[关闭]
【发布时间】:2019-12-03 18:07:53
【问题描述】:
class ReverseArrayElements1
{
  public static void main ( String[] args )
  {
    int[] values = {10, 20, 30, 40}; 
    int temp;

     System.out.println( "Original Array: " + values[0] + "\n" + values[1] +
                         "\n" + values[2] + "\n" + values[3]   );

    // reverse the order of the numbers in the array



    System.out.println( "Reversed Array: " + values[0] + "\n" + values[1] + "\n"
                         + values[2] + "\n" + values[3] );
   }
}

任务 我需要完成程序,以便数组中的数字以相反的顺序出现。这并不意味着我可以只需要以相反的顺序显示元素;我实际上会将数组中的最后一个元素移动到数组的第一个元素中,依此类推。我不能使用循环或创建新数组。

输出应该是

Original Array: 10 20 30 40 
Reversed Array: 40 30 20 10 

【问题讨论】:

  • 你可以使用recursion吗?
  • 不,我们不允许使用递归
  • 不使用迭代或递归——这似乎是一项不可能完成的任务。而且,这似乎是一个不费吹灰之力就众包家庭作业的问题,所以我投票结束。见:stackoverflow.com/questions/11322514/…
  • 这是老师告诉我的。我和你一样迷失了。我什至不知道从哪里开始。
  • 你能不能像temp = arr[0]; arr[0]= arr[3]; arr[3]=tmp;一样手动交换边框值,然后temp = arr[1]; arr[1]=arr[2]; arr[2]=tmp;交换中间值。

标签: java arrays reverse


【解决方案1】:

如果您使用的是 Java 8:

import java.util.stream.IntStream;

// stuff

int[] reversed = IntStream.range(0,values.length).map(i -> values[values.length-i-1]).toArray();

【讨论】:

  • 您不能使用其他库。这违背了目的
  • 我试图回答我收到的问题。由于您没有在问题中指定对外部库的限制,我相信我已经尽力了。在这种情况下,听起来这是一个练习递归的任务 - 并且看到这个问题并没有显示你之前的尝试,我投票赞成关闭这个问题。
  • 我们老师说要重新定义arraylist。
猜你喜欢
  • 2020-06-21
  • 2019-12-06
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多