标题几乎涵盖了它。出于某种原因,这个问题正在逃避我,我找不到合乎逻辑的答案。
编辑:
说我有
int[] values = (2,5,3,2,1,4,6,3,2,1,5,3)
我想得到所有这些元素的乘积。我的教科书要求使用增强的 for 循环来做到这一点。
for (int element : values)
{
NO CLUE WHAT TO PUT HERE
}
然而,我的第一个猜测是,它无法通过增强的 for 循环来完成。
我的教科书只是想骗我教我一些教训吗?
这不能通过增强的 for 循环来完成。假设您有一个数组:(我在 OP 更新问题后更新了答案,更新如下)。
int[] a = {1,2,3};
当你这样做时:
for(int num : a) {
num = num*something;
}
您实际上是在乘以另一个变量(数组不会受到影响)..
num
在上面的例子中只是一个数组元素的副本。所以实际上你正在修改一个局部变量,而不是数组本身。
阅读本文,您会看到数组中的值被复制到一个局部变量中,并且使用了这个局部变量。所以这个乘法不会影响数组的原始值。
操作更新:
如果你想将元素相乘并得到结果,你可以. 你的教科书不是想欺骗你。它不会要求您更改值。但是要使用它们来进行一些计算:
int[] values = {2,5,3,2,1,4,6,3,2,1,5,3};
int result=1;
for(int value : values) {
result *= value;
}
System.out.println("The result: " + result); //Will print the result of 2*5*3*2*...
这可以通过增强的 for 循环轻松完成:
int result = 1;
for (int element : values)
{
result *= element;
}
无法做到,您将不得不使用旧式数组寻址:
for (int i = 0; i < array.length; i++) {
array[i] = array[i] * 2;
}
int index = 0;
for (int element : values)
{
values[index] = element + someVariable;
index++;
}