1. 程式人生 > >關於for迴圈的一個初學者易犯得錯誤。

關於for迴圈的一個初學者易犯得錯誤。

例原始碼:是關於求滿足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。希望以後大家在寫程式時能注意到這點!