(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 }