我必须使用在执行以下代码后存储的值填充数组:
int[] list = {2, 18, 6, -4, 5, 1};
for (int i = 0; i < list.length; i++) {
list[i] = list[i] + (list[i] / list[0]);
}
对于list[0]
,我得到了值3,这是正确的。对于list[1]
,我得到了值27,这是错误的。对于list[2]
我得到9也错了。
谁能告诉我我做错了什么?数组的长度是6,对吗?
list [0] = list[0] + (list[0]/list[0]) = 2 + 2/2 = 3
list [1] = list[1] + (list[1]/list[0]) = 18 + 18/3 = 24
list [2] = list[2] + (list[2]/list[0]) = 6 + 6/3 = 8
list [3] = list[3] + (list[3]/list[0]) = -4 - 4/3 = -5
list [4] = list[4] + (list[4]/list[0]) = 5 + 5/3 = 6
list [5] = list[5] + (list[5]/list[0]) = 1 + 1/3 = 1
您忘记了list[0]
在第一次迭代中从2更改为3,这会影响以后所有迭代的结果。
int[] list = {2,18,6,-4,5,1};
for ( int i = 0; i<list.Length; i++){
list [i] = list[i] + (list[i]/list[0]);
Console.WriteLine(list [i]);
}
输出:3 24 8 -5 6 1
在第一次迭代后列表[0] = 3;你可以在这里查看我的代码:http://rextester.com/TJQTH40178
代码没有问题......
只需在完成逻辑执行后打印出值。
public class ArrayTest {
public static void main(String[] args) {
int[] list = { 2, 18, 6, -4, 5, 1 };
for (int i = 0; i < list.length; i++) {
list[i] = list[i] + (list[i] / list[0]);
}
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
}
}
答案:
3 24 8 -5 6 1