Java中反转数组后for-each循环输出异常,普通for循环正常求助
问题分析与解决:for-each循环误用导致输出异常
核心问题
你在for-each循环里搞混了元素值和索引:
- 普通for循环中,
i是数组的索引,list2[i]能正确取到反转后的元素,所以输出正常。 - 但在
for(int i:list2)里,i是数组list2的元素值,不是索引。你却用list2[i]去取值,这就导致了反向访问:
反转后的list2是[9,8,7,6,5,4,3,2,1,0],第一次循环i=9,取list2[9]得到0;第二次i=8,取list2[8]得到1……最终输出的是0123456789,和预期完全相反。
修正后的for-each循环
直接打印循环变量i即可,因为它就是数组里的元素:
for(int i:list2) { System.out.print(i); }
关于Arrays.toString()的正确输出
Arrays.toString()方法内部会直接遍历数组的每个元素值并格式化输出,不会把元素当成索引使用,所以不管在什么时候调用,都能准确展示数组的真实内容。
内容的提问来源于stack exchange,提问作者SomeGuy
相关产品推荐
相关产品推荐

