3 回答

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊
注意第一個條件 -if (a[i] % 2 == 0) {a[i] += 1;}
這會導(dǎo)致偶數(shù)值增加。因此a[1]
從8
增加到9
。
現(xiàn)在,當(dāng)i==3
,a[a[i]]
被評估為a[1]
等于 時9
。然后將其添加到 的原始值a[3]
(注意運算符是+=
,而不是=
),因此a[3]
變?yōu)?code>1 + 9,即10
。

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊
int[] a = new int[] {9, 8, 3, 1, 5, 4};
for (int i = 0; i < a.length; i++){
if (a[i] % 2 == 0)
a[i] += 1;
else if(a[i] < a.length)
a[i] += a[a[i]];
}
|i | a[i] old | a[i] % 2 | a[i] < a.length | a[a[i]] | a[i] new |
|--|----------|----------|-----------------|---------|----------|
|0 | 9 | - | - | NaN | 9 |
|1 | 8 | + | - | NaN | 9 |
|2 | 3 | - | + | 1 | 4 |
|3 | 1 | - | + | 9 | 10 |
|4 | 5 | - | + | 4 | 9 |
|5 | 4 | + | - | 9 | 5 |
// a = {9, 9, 4, 10, 9, 5};
我以為這a[3]等于1
這是正確的,在步驟3,a[3] = 1
然后就a[1]等于8
這是不正確的,因為在步驟中1它被增加到9

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊
沒關(guān)系。查看您正在做什么的最佳方法是debuggin(在本例中繪制)您的代碼:
int[] a = new int[] {9, 8, 3, 1, 5, 4};
for (int i = 0; i < a.length; i++){
if (a[i] % 2 == 0){
System.out.printf(a[i]);
a[i] += 1;
System.out.printf(a[i]);
}else if(a[i] < a.length){
System.out.printf(a[i]);
a[i] += a[a[i]];
System.out.printf(a[i]);
}
你會看得更清楚。有時,我們自己面對墻壁會更好,因為最好的做法之一就是了解你。祝你好運!。
添加回答
舉報