20165326 第四周课堂测试

第四周课堂测试

知识点:命令行参数(字符串改变为int型输入),递归,利用jdb进行调试
一开始写的时候利用了for循环

for(int t:tmp){
	int sum=0;
	if(t<0)
	  System.out.println("wrong");
	else{
	for(int i=1;i<=t;i++){
	int a=1;
	    for(int j=1;j<=i;j++){
	      a=a*j;
	    }
	  sum=sum+a;
	}
	if(sum<0)
	  System.out.println("溢出");
	else
	  System.out.println(sum);

虽然输出结果相同,但是在jdb执行中无返回值,不符合题意,改为

for(int i=0; i<args.length; i++) {
            tmp[i] = Integer.parseInt(args[i]);
         }
		int sum = 0;
		for (int i=1;i<=tmp[0];i++) {
			sum += fact(i);
		}
		System.out.println(sum);
    }

    public static int fact(int n) {
        if (n == 0)
             return 1;
        else
             return n * fact(n-1);
    }
}

jdb调试如下图



需要先用-g编写才能使用locals查看本地变量
使用next和step来单步调试

原文地址:https://www.cnblogs.com/Czzzz/p/8645408.html