实验5异常处理指导书

实验5异常处理指导书
实验5异常处理指导书

实验 5 异常处理

5.1 实验目的和要求

1、了解异常的种类

2、理解异常继承体系

3、学习简单的异常处理方法。

掌握C++中异常的定义与使用方法;

5.2 实验内容和步骤

1.给出三角形的三边a,b,c,求三角形的面积。只有a+b>c,b+c>a,c+a>b时才能构成三角形。设置异常处理,对不符合三角形条件的输出警告信息,不予计算。

#include

#include

using namespace std;

int main()

{ double triangle(double,double,double);

double a,b,c;

cin>>a>>b>>c;

while(a>0 && b>0 && c>0)

{ cout<

cin>>a>>b>>c; }

return 0; }

double triangle(double a,double b,double c)

{ double area;

double s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

return area; }

2. 编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。

3. 求n!的函数,当用户的输入太大时(例如50),会出现错误。编写一个程序,使用异常处理机制来解决这一问题。补充完善该程序。

#include

using namespace std;

int fac(int n)

{

int result = 1;

if(n<0)

(填空1) "Argument for factorial negative";

else (填空2)

(填空3);

while (填空4)

{

(填空5)=n;

if(result (填空6)

(填空7) result;

n --;

}

return result;

}

int main()

{

int n;

cout << "Please input a number n to xalculte n!:";

cin >> n;

(填空8)

{

cout << n << "! =" << fac(n) << endl;

}

catch (填空9)

{

cout << "Exception occurred: " <<"Overflow!" << endl;

}

catch (填空10)

{

cout << "Exception occurred: " <

}

return 0;

}

4.以下是一个整数栈类的定义:

const unsigned int SIZE=100;

class stack{

public:stack();

~stack();

void push(int);

void pop();

int top()const;

private:

int stack[SIZE];

int tos;

};

试完成该类定义,并且添加异常处理,判断栈空和栈溢出,在主程序中对其进行测试。

实验室偏差处理程序

实验室偏差处理程序 1适用范围 本标准适用于实验室样品检测出现超出规定结果(OOS)和异常分析结果(AAR)时的处理方法(如:原辅材料、包装材料、中间体、成品检验,分析方法验证、工艺验证和其它验证项目)。 2职责 检验员:出现超规定的结果与异常结果时,立即报告主管及时填写《实验室调查报告》。 QC主管:负责实验室偏差的处理,审核《实验室调查报告》所填的内容是否正确、真实、齐全。 3内容 3.1定义 3.1.1超出规定结果(Out Of Specification·OOS) 实验结果不符合规定的限度范围(质量标准、分析方法验证、工艺验证等技术参数)。 3.1.2异常分析结果(Atypical Analytical Results·AAR) 3.1.2.1相同的制备样品重复实验结果或重复制样的检验结果精度不好,可能影 响到结果的判断。 3.1.2.2某个结果,由我们对被测物料、实验室样品和检测步骤已获经验可知其 异常。(可包括认为异常的规定范围内的结果) 3.2步骤 3.2.1QC检验员在检验中一旦得到OOS或AAR立即报告QC主管。 3.2.2调查人员由检验员和QC室主管组成,共同进行实验室调查。 3.2.2.1检验员和QC主管将对所获原始数据进行回顾,对实验步骤作讨论,对 所用仪器的再检查,并填写《实验室调查报告》表。 3.2.2.2若调查清楚地证明:OOS或AAR是由于实验室的差错所致(如人、仪 器、试剂),则剔除已得数据,并重新检测。重检须经QC主管同意,任 何未经同意的重检是不规范的行为。重检记入《实验室调查报告》表中。 重新检测所需样品用原始实验室样品,若有证据证明原有样品不具代表

实验指导书

Matlab实验指导书 河北大学电子信息工程学院 2004年1月

目录 MATLAB实验教学计划 (2) 实验一MATLAB基本操作 (3) 实验二MATLAB图形系统......................................................... . (5) 实验三 MATLAB程序设计 (6) 实验四 MATLAB基本应用领域 (7) 实验五设计性综合实验1---数字信道编译码 (14) 实验六设计性综合实验2---fir滤波器设计................................. . (16) 2

MATLAB实验教学计划 指导教师:郑晓昆薛文玲王竹毅学时数:12学时周4学时2次实验,共3周6次实验,第7—9教学周,每次实验2学时 所用仪器设备:MATLAB7.0实验软件系统 实验指导书:Matlab实验指导书 自编 实验参考书:, 楼顺天等编著, 西安电子科大出版社,06年5月第二版 实验项目: A, MATLAB基本操作 内容:矩阵操作,基本数学函数,逻辑函数操作等; 要求:循序渐进完成P83练习题1—10 B, MATLAB图形系统 内容:图形绘制,图形标注,对数和极坐标,坐标轴控制,颜色控制等要求:循序渐进完成P146练习题1—10 C, MATLAB程序设计 内容:脚本script和函数function认识,流程控制,参数交互输入,基本程序设计技巧练习,程序调试DEBUG等 要求:循序渐进完成P184练习题1—10 D, MATLAB基本应用领域 内容:线性代数,多项式与内插,曲线拟合,数据分析与统计,泛函基础等 要求:循序渐进完成P146练习题1—4,6—19 E, 设计性综合实验----数字信道编译码 内容:1数字通信系统信道编码AMI编译码 2数字通信系统信道编码HDB3编译码 F,设计性综合实验----fir滤波器设计 内容:设计一个有限冲击相应数字滤波器FIR是该滤波器能够滤出规定频率以上的信号,而该频率以下的信号不受影响。 3

erdas实验5指导书

实验5 某地区的遥感影像分类 1.实验目的和要求 a)了解非监督分类和监督分类的原理和背景知识; b)掌握非监督分类和监督分类的过程和方法; c)了解并掌握监督分类中的样本训练方法、分类决策规则和分类结果评估 方法; d)能够利用非监督分类和监督分类技术提取某一研究区土地覆盖类型(植 被、水体、建筑用地、裸地等),并计算各地类的面积、覆盖率等指标。 2.实验设备和数据 a)实验设备:高性能计算机;Erdas Imagine遥感图像处理软件 b)实验数据:Landsat TM数据 3.实验内容 a)分析、认识研究区域Landsat TM数据基本地物类型,建立分类体系; b)根据分类体系,利用非监督分类方法对研究区域Landsat TM数据进行分 类; c)根据分类体系,利用监督分类方法完成研究区域Landsat TM数据分类及 分类结果评价; d)对比非监督分类和监督分类结果的差异,并分析原因。 4.实验步骤参考 1.分类过程 在Erdas Imagine主菜单中选择Classifier,在其下拉菜单中选择Unsupervised Classification,利用其弹出对话框完成非监督分类; Signature Editor——样本编辑器 Unsupervised Classification——非监督分类

输出分类文件输出样本文件 分类数 收敛域值 注意问题:实际工作中常将分类数目取为最终分类数目的两倍;收敛域值是指两次分类结果相比保持不变的像原所占最大百分比。 2 、分类评价(Evaluate Classification ) 打开新的窗口,同时导入非监督分类后的图和原始分类影像;在视窗工具条 标,弹出Raster Attribute Editor对话框,如下图:

实验四 异常处理

Java程序设计实验指导 实验四异常处理 一、实验目的 1、了解Java的异常处理机制; 2、掌握如何合理应用异常处理机制; 3、学会自定义异常处理类。 上机练习之前,必须先完成程序的书写,再上机调试。 二、实验任务 1、类SimpleException中有方法 public static double Division(double x,double y) { if(y==0) throw new IllegalArgumentException("分母不能为0"); //手动抛出异常,对于双精度而言,除数为0可以得到无穷大的值,本不会报异常错误,这里手动强制报错 return x/y; } 主方法中有代码: double a=Double.parseDouble(args[0]); double b=Double.parseDouble(args[1]); System.out.println(Division(a,b)); 借助异常机制获所有可能出现的异常,并提示相关异常的出错信息。最后,无论程序如何结束,保证程序都能输出语句“游戏结束!!!” 2、自定义日期类异常, 1)、定义一个程序DateExceptionTest,该程序主方法中: a)、采用Scanner类的对象来接收三个整数 b)、对于非整数数据,能采用异常进行验证 c)、用三个整数借助自定义类DateException构建出一个日期对象,并以“yyyy-mm-dd” 的形式输出该日期对象。 d)、使用类 2)同时要求,自定义类DateException继承自Exception a)、拥有两个构造方法,分别是DateException(String s)、public DateException(int year,int month,int day) throws DateException和一个成员方法Date getDate()。 b)、第二个构造方法能接收三个整数,拥有验证三个数据是否合法的能力,验证时,对于非法数据格式,采用抛出异常DateException,抛出异常时,携带错误提示信息。 c)、DateException类中,借助方法getDate()获得该组合的日期对象 三、实验指导: 输入一个日期判断是否合法,注意日期的表示范围。 四、实验要求: 1、在上机前写出全部源程序; 2、能在机器上正确运行程序; 五、程序清单: 六、运行结果: 七、调试分析及实验心得 . 1 .

树木学实验指导书(5个实验)

树木学实验指导书 树木学课程组编 2010年3月

树木学实验工作守则 一、实验室内一切仪器设备、实验桌椅及实验材料,未经许可,不得任意搬动或取走。 二、爱护和保管好实验用具、腊叶标本,按规定的操作规程进行实验。 三、保持实验室安静清洁的良好工作环境,不许大声谈笑,不可乱丢纸屑废物。 四、课前必须预习本实验指导书,实验过程中应独立思考,独立操作,按时完成作业,不得抄袭。 五、实验课须自备文具、笔记、参考书及实验报告纸。必须遵守上课时间,不得无故缺席。

实验一裸子植物常见代表科的观察 裸子植物是一类没有真正的花和果实,而以种子进行繁殖的木本维管束植物,其主要特征是形成裸露的种子,不形成果实。 一、目的: 通过松柏纲松科(Pinaceae),杉科(Taxodiaceae),柏科(Cupressacear)各科球花,球果的观察,进一步明确裸子植物的主要特征,掌握松、杉、柏各科的分类特征。 二、材料与用具 马尾松Pinus massoniana的雌雄球花和球果 杉木Cunninghamia lancata的雌雄球花和球果 柏木Cupressus funebris的雌雄球花和球果 实验用具:连续变倍体视显微镜Motic SMZ-140、刀片、解剖针、培养皿、镊子。 教师所用示范设备: 1. 数码体视显微镜Motic DM143 用于操作示范。 2. 数码显微镜Motic DMB5-223IPL 用于示范裸子植物花药切片。 三、操作与观察 球花指的是裸子植物孢子叶的集结物,亦称孢子叶球,松柏纲植物是孢子异型的,小孢子叶集结成单独的小孢子叶球即雄球花。 1、马尾松球花、球果的观察 我们将首先看到一群数目很多的小孢子叶球(雌球花)紧密地着生(旋生)在春枝(当年生枝)的基部,而带红色的大孢子叶球(雌球花)则是单独或成对或三个在一起地着生于幼枝顶端,在松树上发育的小孢子叶球要比大孢子叶球多得多,在春末4-5月,小孢子叶球执行传粉功能后,就脱落了。相反地,大孢子叶球并不脱落,而在传粉后的1-2年内继续发育,逐渐变成结有种子的球果。 取一个马尾松的小孢子叶球(雄球花)来观察它的结构:为了这一点,用镊子把一个雄球花从复孢子叶球中取出来,置于双筒体视镜下观察,可以看到,它具有一个短的梗,小孢子叶象紧密的螺旋一样着生于球花轴上,用针将一些小孢子叶从雄球花中挑出,适当加大放大倍数,可观察到,它们的形状象扁平的小叶。其宽的外缘稍微向上弯曲,称之为药鳞,在每个小孢子叶表面,可看到两个大型的凸出的囊(纵向排列着),这是小孢子囊,亦称花粉

UML实验指导书

UML 实验指导书

目录 实验一UML建模基础 (3) 实验二用例图 (4) 实验三UML类图 (9) 实验四对象图 (13) 实验五包图 (14) 实验六状态图 (17) 实验七活动图 (21) 实验八时序图与协作图 (22) 实验九组件图 (26)

实验一UML建模基础 [实验目的和要求] 1、熟悉UML建模工具Rational Rose的基本菜单及操作。 2、掌握UML的三大组成部分及各部分作用。 3、掌握UML规则和相关机制。 4、掌握UML的可见性规则和构造型的作用。 [实验内容和步骤] 1、练习使用建模工具建立各种UML图形,并对图形进行相应编辑 和修改。 2、认识各种UML关系及可见性符号,并用工具表示出来。 [分析与讨论] 1、总结UML在软件工程中的作用以及使用UML建模的必要性。

实验二用例图 [实验目的和要求] 1、掌握用例的概念。 2、掌握UML用例图的组成、作用以及使用场合。 3、掌握用例与用例之间的各种关系。 4、学习针对具体场景使用用例图进行分析说明的方法。 5、掌握用例描述的概念和基本结构,以及用例描述的作用。 [实验内容和步骤] 1、什么是用例,什么是场景?用例和场景之间的关系是怎样的? 用例是用户希望系统具备的功能,它定义了系统的行为特征。 2、用例图中有哪些组成元素?在UML中是如何表示的? 用例图的组成元素有参与者、用例、关系、系统。 3、用例与用例之间的包含关系、扩展关系和泛化关系各代表什么含义?它们之间有何区别?对以上三种关系各举一例,画出用 例图,并进行说明。 用例与用例之间的包含关系实际上就是面向对象语言中对象之间的调用关系,扩展关系实际上就是一种依赖的关系,泛化关系实际上就是面向对象中的继承关系。 4、为了满足物业中介行业的信息化要求,甲公司基于详尽的需求调研与分析,准备研发一套符合市场需要的、实用的信息管理 系统。主要将实现客户资料信息管理、客户委托(出租、出售、租赁、购买)信息管理、业务线索生成与管理、房源状态自动 更新、权限管理、到期用户管理、房源组合查询等功能。该公 司小王,通过多次的与潜在客户的交流与沟通,完成了最初的 用例模型的开发,下是一个用例模型的局部:

第五章 控制器

第五章控制器 第一节基本概念 一、CPU的基本功能 CPU具有以下4个方面的基本功能: (1)指令控制,即对程序运行的控制; (2)操作控制,即对指令内操作步骤的控制; (3)数据运算,即对数据进行算术运算和逻辑运算,这是CPU的最基本功能; (4)异常处理和中断处理,如处理运算中的溢出等错误情况以及处理外部设备的服务请求等。 历年真题 1.CPU由哪两部分组成?CPU具有哪四个基本功能?(2009年) 【答案】CPU由运算器和控制器组成。 (CPU)具有以下4个方面的基本功能: (1)指令控制,即对程序运行的控制; (2)操作控制,即对指令内操作步骤的控制; (3)数据运算,即对数据进行算术运算和逻辑运算,这是CPU的最基本功能; (4)异常处理和中断处理,如处理运算中的溢出等错误情况以及处理外部设备的服务请求等。 二、CPU的基本组成 CPU主要由主要运算器、控制器两部分组成。在CPU中还有多种寄存器。 CPU主要的寄存器: (1)指令寄存器(IR),存放当前正在执行的指令,为指令译码器提供指令信息。 (2)程序计数器(PC),存放下一条指令的地址。用来提供取指地址,从而控制程序执行顺序。 (3)数据寄存器(DR),存放操作数、运算结果和运算的中间结果,以减少访存的次数。 (4)地址寄存器(AR),存放操作数的地址。 (5)程序状态寄存器(PS),存放计算中的状态信息,这些信息是控制程序的条件。 历年真题 1.在CPU中,哪些寄存器属于控制用的指令部件?它们各起什么作用?(5分)(2000年)【答案】 ①指令寄存器(IR),存放当前正在执行的指令,为指令译码器提供指令信息。 ②程序计数器(PC),存放下一条指令的地址。用来提供取指地址,从而控制程序执行顺序。 ③程序状态寄存器(PS),存放计算中的状态信息,这些信息是控制程序的条件。 2.当读取并执行一条指令时,控制器的主要功能是什么? (2003年) 【答案】 ①从主存取指令,并计算下一条指令在主存中的地址; ②对指令进行译码,产生相应的操作控制信号; ③控制指令执行的步骤和数据流动的方向。 三、单总线CPU结构图(会画并理解)

计算机网络实验上机指导书实验五

计算机网络上机指导书昆明理工大学信自学院

实验五:静态路由实验 【实验目的】 1.了解静态路由的基本原理 2.掌握静态路由的配置流程,熟悉静态路由的配置命令 3.掌握测试静态路由连通性的方法 【实验学时】 建议3学时 【实验原理】 静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器。当然,网管员也可以通过对路由器进行设置使之成为共享的。静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。 静态路由的缺点在于:当网络发生故障或者拓扑发生变化后,静态路由不会自动改变,必须有管理员的介入。 配置IPv4静态路由时,需要了解以下内容: ●目的地址与掩码 在ip route-static命令中,IPv4地址为点分十进制格式,掩码可以用点分十进制表示,也可用掩码长度(即掩码中连续‘1’的位数)表示。 ●出接口和下一跳地址 在配置静态路由时,可指定出接口interface-type interface-name,也可指定下一跳地址nexthop-address,是指定出接口还是指定下一跳地址要视具体情况而定。实际上,所有的路由项都必须明确下一跳地址。在发送报文时,首先根据报文的目的地址寻找路由表中与之匹配的路由。只有指定了下一跳地址,链路层才能找到对应的链路层地址,并转发报文。 在某些情况下,如链路层被PPP封装,即使不知道对端地址,也可以在路由器配置时指定出接口。这样,即使对端地址发生了改变也无须改变该路由器的配置。 ●其它属性 对于不同的静态路由,可以为它们配置不同的优先级preference,从而更灵活地应用路由管理策略。例如:配置到达相同目的地的多条路由,如果指定相同优先级,则可实现负载分担,如果指定不同优先级,则可实现路由备份。 缺省路由是在没有找到匹配的路由表入口项时才使用的路由。在路由表中,缺省路由的目的地址和子网掩码都是0.0.0.0。在使用ip route-static配置静态路由时,如果将目的地址与掩码配置为全零(0.0.0.0

第五章Java语言异常处理-实验题目

第五章Java语言异常处理--实验题目 一、实验目的 1. 掌握Java的异常处理机制。 2. 掌握try、catch、throws和finally这5个关键字的用法。 3. 掌握成员的几个异常类。 4. 掌握自定义异常的使用。 二、实验内容 1.编写程序,从键盘上输入两个数。将第一个数除以第二个数并显示结果;处理所有可能的异常。 2.写出下面程序运行的结果: 3.写出下列程序的输出结果。

4.有下列程序: 若用下面方式执行该程序,则baz的值为( )。 java Test Red Green Blue (A)“”(B)null (C)"Red”(D)”BIue”(E)”Green”(F)代码不能编译(G)程序抛出异常5.有下列程序: 该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常 6.有下列程序:

该程序的输出结果为( )。 (A)没有任何输出(B)输出“Finally”(C)编译错误(D)抛出异常7.修改下列程序的错误之处。 8.写出下列程序的运行结果。

9.编写一个程序,要求从键盘输入一个double型的圆的半径,计算并精出其面积。 测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。10.编写一个应用程序,在main()方法中使用try块抛出一个Exception类的对象,为Exception的构造方法提供一个字符串参数,在catch块内捕获该异常并打印出字符串参数。添加一个finally块并打印一条消息。 11.创建一个自定义的异常类,该类继承Exception类,为该类写一个构造方法,该构造方法带一个String类型的参数。写一个方法.令其打印出保存下来的String对泉。再编写一个类,在main()方法中使用try--catch结构创建一个MyException类的对象并抛出,在catch块中捕获该异常井打印出传递的String消息。

实验5 异常处理

实验五:java异常处理 实验目的: 1.了解Java异常处理机制的优点 2.了解Java异常的种类 3.掌握异常的捕获与处理 4.掌握异常的抛出 5.熟悉用户自定义异常 6.了解异常处理原则 实验步骤: 一.异常捕获和处理的练习 1. 下面源代码要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 2. 源代码如下: 3. 编写并完善上述代码,编译运行代码,查看程序执行结果。 ●按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里哪些语句没有被执行,为什么?块外哪些语句可被执行到,为什么? (1) 修改a=0,保持c[2]=200; (2) 保持a=10,修改c[3]=200; (3) 修改a=0,修改c[3]=200。

二.自定义异常的定义和使用的练习 1. 设计两个数求商的程序,并设定一个异常类,判断两数相除时,除数是否为零,当除数为零时将抛给自定义异常类,并输出除数为零。 2. 部分源代码如下: 3. 分析上述代码,将division方法体中的代码补充完整,判断输入的除数是否为0。如果为0,要抛出Di visorIsNotZeroException异常;如果不为0,则计算这个数的商。并按要求创建自定义异常类DivisorIsNotZ eroException。在main方法中已经给出如何输入数据和调用所写方法。 4. 代码完善后,编译运行代码,输入下表数据进行验证,如果抛出异常填“Y”,否则填“N”。 表6-2-1 测试数据 ●分析自定义异常是如何创建的?

import java.util.Scanner; class DivisorIsNotZeroException extends Exception { public DivisorIsNotZeroException(String message) { super(message); } } public class MyExceptionTest { public static double division(double dividend, double divisor) throws DivisorIsNotZeroException { Double d = new Double(divisor); if (0 == https://www.360docs.net/doc/e210919551.html,pareTo(0.0)) { throw new DivisorIsNotZeroException("除数为0"); } else { return (dividend / divisor); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入被除数:"); double dividend = sc.nextDouble(); System.out.println("请输入除数:"); double divisor = sc.nextDouble(); try { double result = division(dividend, divisor); System.out.println("计算的商= " + result); } catch(DivisorIsNotZeroException e) { e.printStackTrace(); System.out.println(e.getMessage()); } } }

实验五实验六指导书

实验五 MATLAB 实现DFT MATLAB 为计算数据的离散快速傅时叶变换,提供了一系列丰富的数学函数,主要有fft 、ifft 、fft2、ifft2和czt 等。当所处理的数据的长度为2的幂次时,采用基-2算法进行计算,计算速度会显著增加。所以,要尽可能使所要处理的数据长度为2幂次或者用添零的方式来添补数据使之成为2的幂次。 1.fft 和ifft 函数 调用格式是: (1)()X fft Y = 如果X 是向量,则采用傅时叶变换来求解X 的离散傅里叶变换;如果X 是矩阵,则计算该矩阵每一列的离散傅里叶变换;如果X 是()D N *维数组,则是对第一个非单元素的维进行离散傅里叶变换。 (2)()N X fft Y ,= N 是进行离散傅里叶变换的X 的数据长度,可以通过对X 进行补零或截取来实现。 (3)[]()dim ,,X fft Y =或()dim ,,N X fft Y = 在参数dim 指定的维上进行离散傅里叶变换;当X 为矩阵时,dim 用来指定变换的实施方向:dim=1,表明变换按列进行;dim=2,表明变换按行进行。 函数ifft 的参数应用与函数fft 完全相同。 2.fft2和ifft2函数 调用格式是: (1)()X fft Y 2= 如果X 是向量,则此傅里叶变换即变成一维傅里叶变换fft ;如果X 是矩阵,则是计算该矩阵的二维快速傅里叶变换;数据二维傅里叶变换fft 2(X )相当于()()''X fft fft ,即先对X 的列做一维傅里叶变换,然后再对变换结果的行做一维傅里叶变换。 (2)()N M X fft Y ,,2= 通过对X 进行补零或截断,使得X 成为()N M *的矩阵。 函数ifft2的参数应用与函数fft2完全相同 fftn 、ifftn 是对数据进行多维快速傅立变换,其应用与fft2、ifft2类似;在此,不再叙述。 3.czt 函数 调用格式是: ()A W M X czt X ,,,= 式中X 是待变换的时域信号()n x ,其长度设为N ,M 是变换的长度,W 确定变换的步

JAVA实验异常处理

成都大学实验报告 实验项目名称异常处理的编程练习 一、实验目的: 1、了解异常类的作用 2、掌握对异常的捕获和处理方式 二、实验内容(包括源程序及相关说明): 1、使用try….catch语句处理异常。在程序中主动产生一个ArithmeticException 类型被0 除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException 类的对象e 的方法getMessage 给出异常的具体类型并显示出来。源代码如下: public class EXP5_1 { public static void main(String[] args){ System.out.println("这是一个处理异常的例子"); try{ int i=10; i/=0; } catch(ArithmeticException e){ System.out.println("异常是:"+e.getMessage()); } finally { System.out.println("finally语句被执行"); } } } 2、异常类型不匹配的处理方式。源代码如下: public class EXP5_1 { public static void main(String[] args){

System.out.println("这是一个处理异常的例子"); try{ int i=10; i/=0; } catch(IndexOutOfBoundsException e){ System.out.println("异常是:"+e.getMessage()); } finally { System.out.println("finally语句被执行"); } } } 3、包含多个catch子句的异常处理方式.在try 子句中设计两个可能出现的异常,当 a 为0 时会发生异常。另外一个是肯定的异常,因为数组c 的长度为1,定义c[42] 是非法的。通过两个catch 子句分别来捕获异常。 public class EXP5_1 { public static void main(String[] args) { try { int a=args.length; System.out.println("\na = "+a); int b=42/a; int c[]={1}; c[42]=99; } catch (ArithmeticException e) { System.out.println("发生了被 0 除:"+e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组下标越界:"+e); } } } 4、使用throw语句抛出异常. 在上面的实验中,可以发现,异常对象是Java 运行时由 系统抛出的。抛出异常也可以通过使用throw 语句实现。throw 是Java 语言的关 键字,用来告知编译器此处要发生一个异常。throw 后面要跟一个新创建的异常类对象,用于指出异常的名称和类型。 public class EXP5_1{ static void throwProcess(){ try {

指导书_实验5

实验5 类与对象的应用2 实验目的: 1掌握类和对象的概念、定义和使用方法。 2掌握静态数据成员和const修饰的成员函数的用法。 3掌握c++程序的一般结构。 实验内容: 在实验4 个人的活期储蓄账户类SavingsAccount上修改完成以下内容: (1)在类SavingsAccount中增加一个静态数据成员total,用来记录各个账户的总金额,并为其增加相应的静态成员函数getTotal用来对其进行访问。 (2)将类SavingsAccount中不需要改变对象状态的成员函数声明为常成员函数,比如accumulate,getBalance等。 (3)增加日期类Date class Date { int year, month, day; int totalDays; //该日期是从公元元年1月1日开始的第几天 public: Date(int year, int month, int day); int getYear() const { return year; } int getMonth() const { return month; } int getDay() const { return day; } void show() const; //输出当前日期

bool isLeapYear() const; //判断当年是否为闰年 int distance(const Date& date) const;//计算当前日期与指定日期之间相差天数 }; (4)类SavingsAccount中的int date都要改成Date类的对象。 ()将整个程序分为5个文件:date.h account.h是类定义头文件,date.cpp account.cpp 是类实现文件,5.cpp是主函数文件。 提示: (1)利息的计算方式:一年中每天的余额累积起来再除以一年的总天数,得到一个日均余额,再乘以年利率。 (2)两个日期相差天数的计算方式:选取一个基准日期(如公元元年1月1日),在计算两个日期相差天数时,先分别将两个日期与基准日期的相对天数计算出来,再将两个相对天数相减即可。 (3)与基准日期(如公元元年1月1日)相对天数的计算方式:(1)计算公元元年到公元y-1年的总天数。平均每年有365天,闰年多一天,即365*(y-1)加上公元元年到y-1年之间的闰年数。(2)加上当年当月1日到当年1月1日之间相差的天数。(3)加上当年当月当日到当年当月1日之间相差的天数。 (4)可以把每月1日到1月1日天数放在一个数组中,该数组元素值分别是:0,31,59,90,120,151,181,212,243,73,304,334,365 (5)两个头文件里先写:

Java作业实验六---异常处理

提交方式: 把文件名改为学号姓名,提交文档和源码(只需提交最顶层包文件夹) 实验六异常处理 一、实验目的 1.学会利用Try-catch-finally语句来捕获和处理异常; 2.掌握自定义异常类的方法。 二、实验要求 1.通过编程理解系统异常处理的机制和创建自定义异常的方法。 2.掌握基础类。 三、实验内容 (一)异常处理机制 1. 编写使用try…catch 语句处理异常的程序文件Demo4_1.java,

编译并运行程序,并把运行结果复制在下面 。 注意:如果在catch 语句中声明的异常类是Exception,catch 语句也能正确地捕获,这是因为Exception是ArithmeticException的父类。如果不能确定会发生哪种情况的异常,那么最好指定catch的参数为Exception,即说明异常的类型为Exception。 2、源文件是Demo3_2.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。 【思考】 ①先运行上面程序,观察运行结果。 ②按下条件分别修改数据,编译后运行,观察输出结果,分析在try…catch块里那些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? 修改a=0,保持c[2]=200; 保持a=10,修改c[3]=200, 修改a=0,修改c[3]=200; ③再添加一个catch{Exception e}{ },位置在最前面,观察编译信息,说明什么? 3、编写Demo3_3.java 程序,计算两数相除并输出结果。使用两个catch子句,分别捕捉除数为0的异常和参数输入有误异常。源代码如下:

实验5 齿厚测量实验指导书

实验5 齿轮齿厚偏差测量 一、实验目的 1.熟悉齿厚游标卡尺的结构和使用方法。 2.掌握齿轮分度圆弦齿高和弦齿厚公称值的计算方法。 3.加深对齿厚偏差定义的理解,熟悉齿厚测量方法。 二、量具简介 齿厚偏差可以用齿厚游标卡尺(图5-11)或光学测齿卡尺测出。本实验用齿厚游标卡尺测量齿厚实际值。齿厚游标卡尺由互相垂直的两个游标尺组成,测量时以齿轮顶圆作为测量基准。垂直游标尺用于按分度圆弦齿高公称值h确定被测部位,水平游标尺则用于测量 分度圆弦齿厚实际值。齿厚游标卡尺的读数方法与一般游标卡尺相同。 三、测量原理 齿厚偏差是指被测齿轮分度圆柱面上的齿厚实际值与公称值之差。对于标准直 齿圆柱齿轮,其模数为m,齿数为z,则分度圆弦齿高公称值和弦齿厚公称值按下式计算 为了使用方便,按上式计算出模数为1mm的各种不同齿数的齿轮分度圆弦齿高和弦齿厚的公称值,列于下表。 对于变位直齿圆柱齿轮,其模数为m,齿数为z,基本齿廓角为a,变位系数为x,则 分度圆弦齿高公称值和弦齿厚公称值按下式计算 四、实验步骤 (1)计算齿轮顶圆公称直径da和分度圆弦齿高公称值和弦齿厚公称值;(或从下表中查取)。 (2)首先测量出齿轮顶圆实际直径d a实际。按的数值调整齿厚卡尺的垂直游标尺,然后将其游标加以固定。 (3)将齿厚游标卡尺置于被测齿轮上,使垂直游标尺的高度板与齿顶可靠地接触,然后移动水平游标尺的量爪,使之与齿面接触,从水平游标尺上读出弦齿厚实际值。

这样依次对圆周上均布的几个齿进行测量。测得的齿厚实际值与齿厚公称值之差即为齿厚偏差。 (4)合格性条件为 五、思考题 1.测量齿轮齿厚是为了保证齿轮传动的哪项使用要求? 2.齿轮齿厚偏差可以用什么评定指标代替?

实验六异常处理

实验六异常处理 云南大学信息学院面向对象技术导论 java程序设计大学教程实验 【开发语言及实现平台或实验环境】 Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】 1. 掌握Java中异常的概念及含义。 2. 掌握异常的定义、抛出方法以及如何捕捉处理异常。 3. 熟悉如何将异常处理灵活运用到实际编程中。 【实验要求】 1. 运行上课讲解的例子; 2. 完成下列实验内容。 【实验内容】 一、读懂并运行下列程序,体会Java中异常处理机制。 1. 分析并运行下面的程序。参考源代码如下: import java.io.*; public class ExceptionTest { public static void main ( String args[] ) { for ( int i = 0; i < 4; i++ ) { int k; try { switch ( i ) { case 0: //除数为0 int zero = 0; k = 911 / zero; break; case 1: //空指针 int a[] = null; k = a[0]; break; case 2: //数组下标越界 int b[] = new int[4]; k = b[6]; break; case 3: //字符串下标越界 char ch = "China”.charAt(5); break; } }catch ( Exception e ) { System.out.println("\nTestCase#"+i+"\n");

System.out.println(e); } } } } 问题: (1) 程序中设计循环有何目的? (2) 程序中将产生哪些异常? (3) 程序中的异常是如何抛出、捕捉及处理的? 答:(1)获得全部的异常。 (2)除数为0,空指针,数组下标越界,字符串下标越界 (3)抛出:当语义限制被违反时,将会抛出(throw)异常,即产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。捕捉:异常抛出后,运行时系统从生成异常对象的代码开始,沿方法的调用栈进行查找,直到找到包含相应处理的方法代码,并把异常对象交给该方法为止,这个过程称为捕获(catch)异常。处理:书写特殊的异常处理代码进行处理。 实验结果: 2. 分析并运行下面的程序。程序源代码如下: public class ExceptionTest { public static void main ( String args[] ) { System.out.println("捕获不同类型的异常"); try { int a=10/0; } catch ( ClassCastException e ) { System.out.println("发生异常"+e); } finally{ System.out.println("执行finally语句");

CASS实验指导书(实验五)

实验五 CASS8.0在工程中的应用 本章主要讲述CASS8.0在工程中的应用,其中包括基本几何要素的查询、土方量的计算、断面图的绘制、公路曲线设计、面积应用以及如何进行图数转换。 5.1 基本几何要素的查询 本节主要介绍如何查询指定点坐标,查询两点距离及方位,查询线长,查询实体面积。首先打开任一已有.dwg图像,如STUDY.DWG。 5.1.1查询指定点坐标 用鼠标点取“工程应用”菜单中的“查询指定点坐标”。用鼠标点取所要查询的点即可。也可以先进入点号定位方式,再输入要查询的点号 说明:系统左下角状态栏显示的坐标是迪卡尔坐标系中的坐标,与测量坐标系的X和Y的顺序相反。用此功能查询时,系统在命令行给出的X、Y是测量坐标系的值。 5.1.2查询两点距离及方位 用鼠标点取“工程应用”菜单下的“查询两点距离及方位”。用鼠标分别点取所要查询的两点即可。也可以先进入点号定位方式,再输入两点的点号。 说明:CASS8.0所显示的坐标为实地坐标,所以所显示的两点间的距离为实地距离。 5.1.3查询线长 用鼠标点取“工程应用”菜单下的“查询线长”。用鼠标点取图上曲线即可。 5.1.4查询实体面积 选择“工程应用”菜单下的“查询实体面积”,用鼠标点取待查询的实体的边界线或内部点即可,要注意实体应该是闭合的,如房子、菜地等。

5.2土方量的计算 5.2.1 DTM法土方计算 由DTM模型来计算土方量是根据实地测定的地面点坐标(X,Y,Z)和设计高程,通过生成三角网来计算每一个三棱锥的填挖方量,最后累计得到指定范围内填方和挖方的土方量,并绘出填挖方分界线。 DTM法土方计算共有两种方法,一种是进行完全计算,一种是依照图上的三角网进行计算。完全计算法包含重新建立三角网的过程,又分为“根据坐标计算”和“根据图上高程点计算”两种方法;依照图上三角网法直接采用图上已有的三角形,不再重建三角网。下面分述三种方法的操作过程: 1. 根据坐标计算 ●用复合线/多段线(命令:PL)画出所要计算土方的区域,一定要闭 合,但是尽量不要拟合。因为拟合过的曲线在进行土方计算时会用折 线迭代,影响计算结果的精度。 ●用鼠标点取“工程应用”菜单下的“DTM法土方计算”子菜单中的“根 据坐标文件”。 ●提示:选择边界线用鼠标点取所画的闭合复合线。出现“输入高程 点数据文件名”,选中study.dwg文件,出现“DTM土方计算参数设 置”对话框,其中: 区域面积:该值为复合线围成的多边形的水平投影面积。 平场标高:指设计要达到的目标高程。(本实验为了方便观看效果,可 选择497) 边界采样间距:边界插值间隔的设定,默认值为20米。: 边坡设置:选中处理边坡复选框后,则坡度设置功能变为可选,选中 放坡的方式(向上或向下:指平场高程相对于实际地面高程的高低, 平场高程高于地面高程则设置为向下。)然后输入坡度值。 ● 设置好计算参数后点击“确定”,屏幕上显示填挖方的提示框,如图 5-1所示,包括挖方量和填方量。命令行也会显示: 挖方量= XXXX立方米,填方量=XXXX立方米 同时图上绘出所分析的三角网、填挖方的分界线(白色线条)。 回车后屏幕上显示填挖方的提示框,命令行显示: 挖方量= XXXX立方米,填方量=XXXX立方米 同时图上绘出所分析的三角网、填挖方的分界线(白色线条)。 ●关闭对话框后系统提示:

实验10--java异常(答案)

实验六Java异常处理 【实验目的】 1)掌握Java异常的概念及工作机制 2)掌握异常的分类 3)掌握抛出异常语句的使用(throw) 4)掌握抛出捕获处理异常语句的使用(try…catch…finally) 5)掌握上抛异常语句的使用(throws) 6)掌握创建自定义异常 【实验环境】 JDK1.6+Eclpise3.2 【实验准备】 1)复习课件中理论知识 2)练习课堂所讲的例子 【实验内容】 1、编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。 package SIX; import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; public class CIRCLE { public static void main(String[] args) throws IOException { System.out.print("请输入半径: "); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); try{ System.out.println("圆的面积为: "+computerArea(Double.parseDouble(br.readLine()))); } catch(NumberFormatException e){ System.out.println("您输入的不是数值,请重新输入"); } } public static double computerArea(double r)

相关文档
最新文档