如何将数组元素反向分配到另一个数组中?我是初学者[重复]

Posted

技术标签:

【中文标题】如何将数组元素反向分配到另一个数组中?我是初学者[重复]【英文标题】:How will I assign array elements reversely into another array? I am a beginner [duplicate] 【发布时间】:2019-12-26 12:11:25 【问题描述】:

我想使用此代码将数组元素反向分配到另一个数组中。我需要帮助。

int a[] = 1, 2, 3, 4, 5;
int aR[] = new int[a.length];
for (int i=0; i <= a.length; i++) 
    for (int j=aR.length; j >= aR.length; j--) 
        aR[j] = a[i];
    

System.out.println(Arrays.toString(aR));

我希望输出是 [5, 4, 3, 2, 1],但输出是一个 Array Exception。

【问题讨论】:

为什么需要第二个循环?你只需要一个 你只需要一个 for 循环而不是两个,将 for 循环从 i = (a.length-1) 运行到 0 并递减计数器 问题出在你的内部循环中,这些条件没有任何意义。您从j=0 开始,只要它大于或等于aR.length,就递减该值。您可能想从 aR.length 开始直到等于 0。 第二个说明:int i=0; i &lt;= a.length; i++ 不正确,你要迭代直到i 低于a.legth,而不是低于或等于。 如 cmets 中所述,您只需要一个循环。 j = arr.length; for (int i = 0; i &lt; arr.length; i++) aR[j - 1] = a[i];j = j - 1; 【参考方案1】:

您可以通过多种不同的方式做到这一点,正如您所尝试的那样,只需按相反的顺序获取和分配元素,如下所示:

int[] a = 1, 2, 3, 4, 5;
    int[] aR = new int[a.length];
    int index = 0;
    for (int i=a.length-1; i >=0; i--) 
            aR[index] = a[i];
            index++;
    
    System.out.println(Arrays.toString(aR));

【讨论】:

我运行这段代码,结果是:[5, 4, 3, 2, 1],因为我刚刚覆盖了元素所以,很明显。 :) 不需要“index”的东西。只需执行for (int i=0; i&lt; a.length; i++) aR[a.length-1-i] = a[i]; 即可完成... 正确,我可能应该先喝完咖啡再发表评论;-)【参考方案2】:

代码修改为:

int a[] = 1, 2, 3, 4, 5;
int aR[] = new int[a.length];
for (int i=0; i < a.length; i++) 
    int j = (a.length-1) - i;
    aR[j] = a[i];

System.out.println(Arrays.toString(aR));

如果数组的长度为 n 则最终有效索引为 n-1,则会出现异常原因 长度 1,2,3,4 ... 但是索引 0,1,2,3 .... 所以,总是比长度小 1。

【讨论】:

以上是关于如何将数组元素反向分配到另一个数组中?我是初学者[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c++ 使用动态分配运算符反转数组元素

在C中将奇数索引元素从一个数组复制到另一个数组

将数组元素从一个数组位置移动到另一个位置

如何根据输入数量定义数组大小?

如何使用散列将元素从一个数组伪随机移动到另一个数组?

如何将一个char数组中元素插入到另一个char数组中指定元素后面,在java语言环境,但不能使用java的内置函数