如何将数组元素反向分配到另一个数组中?我是初学者[重复]
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 <= a.length; i++
不正确,你要迭代直到i
低于a.legth
,而不是低于或等于。
如 cmets 中所述,您只需要一个循环。 j = arr.length; for (int i = 0; i < 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< 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。
【讨论】:
以上是关于如何将数组元素反向分配到另一个数组中?我是初学者[重复]的主要内容,如果未能解决你的问题,请参考以下文章