鲶鱼java代码_实验一、求阶乘及计算数学常数E

一、实验目的

1、掌握三种流程控制语法,并熟练应用

2、了解Java的异常处理机制,会编写相应程序

3、掌握方法重载的含义,并熟练应用

二、实验内容:

1、编写程序,计算n的阶乘(n!),n!=1×2×3×…n

2、编写程序,计算数学常数e的值:e=1+1/1!+1/2!+1/3!+...

三、实验步骤、出现的问题及解决方法

1、计算N的阶乘:

1)、程序流程图

计算n的阶乘(n!),n!=1×2×3×…n,在这个小程序的设计中如果说应用递归算法的话就简单了许多。程序的流程大体如下:

?/P>

2)关键代码段:

(a)递归算法求阶乘及异常处理

static long jc(long n) {

try{

if(n == 1)

{

return 1;

}

else

{

return

jc(n-1)*n;

}

}

catch(Exception e)

{

System.out.println("called");

}

return jc(n-1)*n;

}

(b)程序运行界面

?/P>

2、求数学常数E

1)、编写求数学常数E的时候,可以参考求N的阶乘的思路。它的流程图如下:

?/P>

2)、关键代码段

public static void main(String args[])

{

double E=1;

double tmp;

for(int i=1;;i++){

tmp=1;

for(int j=2;j<=i;j++)

tmp *= j;

tmp=1.0/tmp;

E+=tmp;

if(tmp<0.00001)

break;

}

System.out.println(E);

System.out.println(Math.E);

}

四、实验总结体会

在这次实验中,令我最痛疼得是如何利用递归算法来求阶乘。由于以前数据结构学习的不太好,最终还是到网上查找了相关的资料这个问题才得到了圆满的解决。递归算法是常用的数据结构算法之一,广泛应用于重复问题的求解。求N的阶乘恰好利用这个算法比较合适。

在编写程序的时候,我遇到的第二个问题就是异常处理。异常处理是这个实验的重点,我对它非常重视。不仅学习了课本上所有的知识,还到网上看了相关的要点及处理异常的经验。这个使我在做异常处理这点上作的比较好。起先我是讲异常处理放在主函数中,但是经过多次的测试发现,如果输入的数据类型有错误的话,无法进行再次输入,也就是说我在做异常处理时候,没有考虑到数据的再次输入问题。经过与老师的讨论,我恍然大悟我将异常处理放到了求解阶乘的函数中,这样在程序中的输入异常还结果的越界异常都能得到解决,而且也实现了数据的再次输入。

曾经在JAVA爱好者看了到了这样的一篇帖子,说得是中国的程序员缺少异常处理的意识,所以编写不出高质量的程序来。也许这个帖子说得很对,中国的程序员是否缺乏我不敢说,但是就我周围的同学们在写程序的时候,没有几个能考虑如果程序在运行的过程中出错了怎么办,应不应该来以文字的形式来通知程序的用户。我知道我记得对不对,我觉得在以前学习C语言和VC的时候,根本就对异常处理没有任何的意识。知道学习了JAVA以后,我才初步建立了这个理念。其实在写异常处理的时候真的很有意思,就像在捕捉什么东西一样,有小到大地一次捕捉,捕捉到了还有相应的反应。我喜欢写异常处理,因为我知道异常处理对于一个程序的重要性,因为它确实的关系着一个程序的质量。对于用户来说,如果程序的异常处理作的不好的话,当用户在用我写的程序的时候会很不方便,也许会因为程序的错误给用户带了很大的损失(包括经济损失等)。一个好的程序大约是20%的代码和80%的异常处理,从这句话中足能看出异常处理的重要性。

五、程序清单与测试数据

测试用例1、

输入合法数据“3”期待输出6,实际输出6 。

?/P>

测试用例2、

输入非法数据“a”期待输出a

,实际输出

请再次查看您输入的数据,是否是整数。如果不是,请重输入!。

?/P>

测试用例3、Java求e,精确到0.00001。实际输出:2.7182815255731922。

?/P>

六、程序清单:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值