(1)首先建立一個Java項目和Java的類並命名為“階乘計算”
(2)由於要調用輸入函數java.util.Scanner.nextInt()(這個函數是專門提供輸入類型為整形的數據),所以要導入包java.util.Scanner,Java語句為import java.util.Scanner
(3)建立一個主函數,新建一個 參數為System.in的Scanner對象 其中名稱為 sc,System.in參數是鍵盤輸入內容,Java語句為:Scanner sc = new Scanner(System.in);
(4)設置提示輸入n,然后創建一個int類型來傳入參數n,然后設置一些中間變量,具體語句是:System.out.print("請輸入n:");int num = sc.nextInt();int i=1,n=num,sum=1;其中第二個語句表示將輸入的參數賦值給整形i
(5)編寫while循環階乘代碼,由於要輸出階乘算式,所以循環中加入了輸出語句,這里的代碼和c語言相似,不再具體的介紹
(6)do-while和for循環語句與while語句類似,主要是遞歸方法,首先要在類外建立一個遞歸方法的類,然后在主函數內調用遞歸方法並傳入參數(我在調用遞歸方法時添加了異常機制,即如果出現錯誤就中斷操作,並輸出異常)
(7)運行程序,輸入階乘n為8,代碼和結果如圖:
總結心得:
(1)首次學會了調用輸入包java.util.Scanner,並掌握了nextInt()函數
(2)為滿足輸出階乘算式,必須在每次循環中輸出當前循環的乘數以及乘號,最后在添上計算結果
(3)在建立遞歸函數時,必須要先構造函數,即BigInteger(String val);要注意與c++的構造函數的區別,同時開頭要導入包java.math.*
(4)由於階乘數據量比較大,所以最好要進行異常處理,避免程序卡死
(5)要注意區分while,do-while和for循環中循環次數的控制
源代碼如下:
1 import java.util.Scanner; 2 import java.math.*; 3 public class 階乘 { 4 public static void main(String[] args){ 5 Scanner sc = new Scanner(System.in); 6 System.out.print("請輸入n:"); 7 int num = sc.nextInt(); 8 int i=1,n=num,sum=1; 9 System.out.print("while語句的階乘算式:1"); 10 while(i<n){ 11 i+=1; 12 sum*=i; 13 System.out.print("*"+i); 14 } 15 System.out.println("="+sum); 16 17 i=1;sum=1; 18 System.out.print("do-while語句的階乘算式:1"); 19 do{ 20 i+=1; 21 sum*=i; 22 System.out.print("*"+i); 23 }while(i<n); 24 System.out.println("="+sum); 25 26 27 System.out.print("for語句的階乘算式:1"); 28 for(i=2,sum=1;i<=n;i+=1){ 29 sum*=i; 30 System.out.print("*"+i); 31 } 32 System.out.println("="+sum); 33 34 35 階乘 test = new 階乘(); 36 System.out.print("遞歸方式的階乘算式:1"); 37 for(i=2,sum=1;i<=n;i+=1){ 38 39 System.out.print("*"+i); 40 } 41 try { 42 System.out.println("="+test.bigsum(num)); 43 } catch (Exception e) { 44 // TODO Auto-generated catch block 45 e.printStackTrace(); 46 } 47 48 49 } 50 public BigInteger bigsum(int i) { 51 if (i == 1) { 52 return BigInteger.ONE; 53 } 54 return BigInteger.valueOf(i).multiply(bigsum(i-1)); 55 } 56 }