我对编程非常陌生,还学习了java中的foreach循环。据我所知,这是经典for loop的一个较短版本。我的问题是,如何使用foreach将值保存到数组中,还是只读?
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
for (int i : arr) {
arr[i] = i;
}
但我的数组是[0,0,0,0](当然可以,但是我可以修改它吗?)
如果没有,有没有其他的方法来代替正常的for循环?
1条答案
按热度按时间2ic8powd1#
简而言之:不,没有办法。
较长的答案:使用for-each循环,您将丢失索引信息,也就是说,在循环中,您不知道您处理的是第一个、第二个还是第一百个元素。您需要索引来寻址数组中要写入的位置。所以只使用for-each是没有办法的。
注意:在您的示例中,第一个循环只是用它们的索引覆盖数组的元素。你会得到的
arr = { 0, 1, 2, 3, 4 }
. 第二个循环只起作用,因为它在一个数组上迭代,这个数组的元素碰巧是它们自己的索引——正如您之前所定义的那样。例如,如果您的数组是'arr={42,101,-73,0,5}',则第一次迭代将尝试访问只有5个元素的数组的第43个元素,从而导致异常。
您可以创建并增加自己的索引计数器,但这实际上是传统for循环以非常方便的方式所做的。
常规for循环:
对于每个回路: