關於for迴圈的一個初學者易犯得錯誤。
阿新 • • 發佈:2019-01-22
例原始碼:是關於求滿足1!+2!+...+n!<=9999最大的n;
class BiggestNum{
public static void main(String args[]){
function();
}
static void function(){
int sum=0,j=1,i;
while(sum<=9999){
for (i=1;sum<=9999;i++){//注意的問題i++是在for中全部語句執行完,才執行它。
j*=i;
sum+=j;//當i=7時,sum=5913;然後i+1=8,進入for中,sum=46233,然後i再加1,變成9.跳出for迴圈。最後的i=9.所以最後應該是i減去2
//System.out.print(i+" ");
//System.out.println(sum);測試語句
}
System.out.println("滿足1!+2!+...+n!<=9999最大的n為:"+(i-2));
}
}
}
開始做的時候總找不出問題在哪裡,最後測試了一下,問題出在for迴圈最後一個i++中;i++是在for中全部語句執行完,才執行它。當i=7時,sum=5913;然後i+1=8,進入for中,sum=46233,然後i再加1,變成9.跳出for迴圈。最後的i=9.所以最後應該是i減去2。希望以後大家在寫程式時能注意到這點!