我的代碼使用 for 回圈訪問陣列元素。程式的輸出是[19,17,15]陣列的元素int a[] = { 12, 15, 16, 17, 19, 23 }。撰寫以下代碼后的輸出:
public class Tester {
public static void main(String s[]) {
int a[] = { 12, 15, 16, 17, 19, 23 };
for (int i = a.length - 1; i > 0; i--) {
if (i % 3 != 0) {
--i;
}
System.out.println(a[i]);
}
}
}
演算法:
迭代1:
i=5所以a[5]=23。“if 陳述句”為真并--i執行。所以i=4。因此,a[4]=19將列印作為輸出中的第一個元素。迭代 2:
i=3所以a[3]=17. “if 陳述句”再次變為真,--i應該執行,但是當我嘗試使用除錯工具查看它是如何作業時,它會跳過該條件。我認為輸出是a[3]=17錯誤的。
你能幫我理解為什么它給出 17 作為輸出嗎?在我看來,它應該跳過那部分。
uj5u.com熱心網友回復:
這是一步一步的解釋。(i % 3 != 0)檢查是否i is not divisible by 3. 另請注意,在這種情況下,您的 post 和 pre-decrementsi不相關,因為無論它們如何減少,結果都是相同的。
i = 5;
i not divisible by 3 so i-- = 4
print a[4] = 19
i-- at end of loop = 3
i is divisible by 3 so i remains 3
print a[3] = 17
i-- at end of loop = 2
i not divisible by 3 so i-- = 1
print a[1] = 15
i-- = 0 so loop terminates.
uj5u.com熱心網友回復:
在迭代 2 中,其中 i=3 條件為假,因為 3 % 3 = 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473537.html
上一篇:查找電梯樓層行駛時間表的排序演算法,從當前樓層開始,預先選擇要到達的樓層和行駛方向
下一篇:如何找到可能的組合
