鲶鱼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>

六、程序清单:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux Shell 002-基础知识

Linux Shell 002-基础知识 本节关键字&#xff1a;Linux、Bash Shell、基础知识、Bash特性 相关指令&#xff1a;bash、rm、cp、touch、date 基础知识 什么是Shell脚本 简单概括&#xff1a;将需要执行的命令保存到文本中&#xff0c;按照顺序执行。 准备描述&#xff1a;sh…

java表达式的类型,Java如何确定三元条件运算符表达式的类型?

Can anyone explain this?public class Test {public static void main(String[] args) {char c A;int i 0;boolean b true;System.out.println(b ? c : i);System.out.println(b ? c : (char)i);System.out.println(b ? c : 0);System.out.println(b ? c : (char)0);}…

java里的sleuth_java基础之spring cloud微服务快速教程之(十一) Sleuth(zipkin) 服务链路追踪...

0、前言微服务架构上众多微服务通过REST调用&#xff0c;可能需要很多个服务协同才能完成一个接口功能&#xff0c;如果链路上任何一个服务出现问题或者网络超时&#xff0c;都会形成导致接口调用失败。随着业务的不断扩张&#xff0c;服务之间互相调用会越来越复杂。如何清晰地…

android Activity 之间传递复杂对象

、传递Object有两种方式来传递Object:Serializable和Parcelable2.1 使用Serializable方式前提&#xff1a;Object需要实现Serializable接口用Serializable方式传递Object的语法&#xff1a;bundle.putSerializable(key,object);用Serializable方式接收Object的语法&#xff1a;…

opengl模板缓冲区

相信大家有些人对opengl的模板缓冲区不是很理解&#xff0c;包括我最开始也是&#xff0c;opengl的模板缓冲区其实就是采用过滤的技术来控制那些颜色可以绘制&#xff0c;那些不能进行绘制。这里的过滤技术也就是我们的一个控制方法&#xff0c;主要体现在如下两个函数glStenci…

java ui awt_java试用(3)awt,UI

importjava.awt.*;importjava.awt.event.*;publicclassMyFrameextendsFrame{privateTextField tf;publicstaticvoidmain(String args[ ]){MyFrame frnewMyFrame("Hello Out There!");fr.InitUI();}publicMyFrame (String str){super(str);//调用父类的构造方法}publi…

Linux php 中文乱码解决

在ubuntu下php网页输出乱码&#xff0c;在不涉及数据库编码的情况下&#xff1a; 修改“/etc/php5/apache2/php.ini”将 default_charset "iso-8859-1" 修改为default_charset "utf-8" 然后重启apache: sudo /etc/init.d/apache2 restart 推荐一个自己业…

vue在java中的应用_开发知识-Vue篇:在Vue应用中集成O2OA

在前面的章节中&#xff0c;我们介绍了两种在O2OA中使用Vue开发应用的方式&#xff0c;已经可以满足绝大多数的情况了。如果您考虑完全脱离O2的web服务器&#xff0c;自己搭建web服务器&#xff0c;那就请阅读本章。我们还是使用Vue的Vue-CLI工具&#xff0c;创建Vue应用&#…

java高性能低功耗计算_实现低功耗的高性能深度学习

对于大多数功耗敏感型的嵌入式视觉应用而言 , 搭载专用CNN引擎的视觉处理器可 能是能否满 足设计功 耗 预算的关键区别因素。选择专用CNN引擎似乎是一件理所应当的事情 , 但如何在芯片实现之前就测量 出 功 耗呢&#xff1f;我们假设一项应用的性能阈值对功耗预算有严格要求&am…

C++ 虚函数在基类与派生类对象间的表现及其分析

近来看了侯捷的《深入浅出MFC》&#xff0c;读到C重要性质中的虚函数与多态那部分内容时&#xff0c;顿时有了疑惑。因为书中说了这么一句&#xff1a;使用“基类之指针”指向“派生类之对象”&#xff0c;由该指针只能调用基类所定义的函数&#xff0c;如果要让基类的指针使用…

Android---什么是3G

学习安卓之前我们必须了解什么是3g.这几年随着IT技术的革新。移动互联网已经渐渐的占据了市场的主导地位。而3g技术是移动互联网的一方面体现。那么究竟什么是3g? 3G有三大制式&#xff0c;GSM升级后的WCDMA&#xff0c;CDMA升级后的CDMA2000&#xff0c;以及我国自主开发的TD…

centos7硬盘挂载mysql_centos7 挂载新磁盘

一 、挂载新磁盘查看磁盘[rootlocalhost ~]# fdisk -lDisk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk lab…

autolisp 列表 resbuf

有以下 list : (1 2 3 (4 5 6) "Properties" (("id" . 3) ("name" . "hello lisp"))) 要求用: quote cons acutBuildList acutNewRb 方式构造 转载于:https://www.cnblogs.com/pangblog/p/3331246.html

如何看懂php源程序,概述 · thinkphp5.0 源码阅读学习 · 看云

**1 章节简介**概述: 记录框架的文件&#xff0c;类&#xff0c;函数或方法等索引到文章的具体章节&#xff0c;方便查找。框架流程&#xff1a;框架流程的重要文件分析。框架工具&#xff1a;框架自带的重要工具文件分析。框架驱动&#xff1a;框架底层的驱动与扩展目录分析。…

php评论盖楼怎么实现,dedecms评论盖楼实现楼层数,类似腾讯、网易的评论(5.5/5.6版)...

DEDE评论效果&#xff1a;修改后的效果&#xff1a;修改步骤一、织梦dedecms5.5版本(5.6版本请往下看)1、修改/plus/feedback_ajax.php文件的第131行(如果你没改过)下面是修改之前的代码&#xff1a;$qmsg {quote}{title}.$row[username]. 的原帖&#xff1a;{/title}{content…

Nokia 920全部CODE

code码都是7位&#xff0c;我是从别的地方copy过来的&#xff0c;code码后面带了些乱码懒得删了&#xff0c;自己数7位code就是了。 RM-820 NDT AMERICA ATT White 059N5T3RM-820 NDT AMERICA ATT Yellow 059N5T5RM-820 NDT AMERICA ATT Black 059L848RM-…