Ⅰ 關於java中for循環嵌套的問題。
大俠們說了很多,不知道樓主是否明白
我再解釋一下
首先
1、為什麼k執行了兩次後會重新變成0
因為你可以看出,這里使用了三層循環
也就是for循環了三層
而k=0;k<2;k++在最裡面,也就是
j=0;j<2;j++
當j從0開始,那麼要執行裡面的代碼,也就是for(k=0;k<2;k++)
當for(k=0;k<2;k++)執行完成後,往上一級回看,這個時候沒有滿足j>=2,那麼就繼續執行,也就是j++,然後在執行for(k=0;k<2;k++)
這樣反復執行
直到j>=2為止,那麼for(k=0;k<2;k++)在往上一級回看,看i是否大於等於2
如果是的話那麼將結束循環,不是的話,將繼續執行for(j=0;j<2;j++),因為執行了for(j=0;j<2;j++),那麼他要執行下面的話,也就是for(k=0;k<2;k++)
這個時候k又被賦值為0
講了一下,才發現很簡單的東西想要說的清楚其實也不容易,老師辛苦啦
Ⅱ java循環例題:100元找零錢,零錢1,2,5元,問共有多少種分法。
在Java中,要解決100元找零錢的問題,可以使用嵌套循環來枚舉所有可能的找零組合。以下是一個改進和潤色後的代碼示例,它清晰地展示了如何計算使用1元、2元和5元硬幣找零的所有可能方式。
```java
public static void splitMoney(int total) {
int count = 0; // 用於計數不同找零方式的數量
// 外層循環控制5元硬幣的數量
for (int five = 0; five <= total; five += 5) {
// 次外層循環控制2元硬幣的數量
for (int two = 0; two <= total - five; two += 2) {
// 內層循環控制1元硬幣的數量
for (int one = 0; one <= total - five - two; one += 1) {
// 檢查當前的硬幣組合是否有效
if (five >= 0 && two >= 0 && one >= 0 && (total - (five + two + one)) >= 0) {
// 輸出當前的找零組合
System.out.printf("%d元=%d個5元 +%d個2元 +%d個1元 +%d個0.1元\n",
total, five / 5, two / 2, one / 1, total - (five + two + one));
count++; // 有效組合,計數器加一
}
}
}
}
// 輸出總的找零組合數量
System.out.println("\n總共有" + count + "種找零方法。");
}
// 調用函數
splitMoney(100);
```
這段代碼首先初始化一個計數器來追蹤不同的找零方法。然後,它使用三個嵌套的`for`循環來遍歷所有可能的5元、2元和1元硬幣的數量。每次循環都會檢查當前的硬幣組合是否滿足總金額的要求。如果組合有效,它會輸出具體的找零方式,並且更新計數器。最後,函數會輸出總共找到的找零方法數量。
注意,在原代碼中有一些邏輯錯誤,例如`b=b+5`、`c=c+2`和`d=d+1`的增量應該在循環條件中進行檢查,以確保硬幣的數量不會超過所需的總數。此外,還修正了輸出格式,使其更加清晰易讀。