《Java程序设计》上机实验报告 实验四 异常类的定义及处理

《Java程序设计》上机实验报告 实验四   异常类的定义及处理
《Java程序设计》上机实验报告 实验四   异常类的定义及处理

信息科学与工程学院《Java程序设计》上机实验报告

专业班级姓名学号

实验时间指导教师成绩

实验名称实验四异常类的定义及处理

实验目的1)了解异常处理方法。

2)熟悉并掌握常见异常的捕获方法。

3)熟悉JDK中已经定义的若干异常类的层次结构。

4)掌握自定义异常类的创建方法。

主要实验记录及个人小结

(包括部分实验源程序、调试结果及实验结果分析等)1.编写程序实现如下功能:生成并捕获到NegativeArraySizeException和IndexOutOfBoundsException类型的异常,并显示捕获到的异常信息。然后在此基础上生成并捕获到NullPointerException类型的异常,并显示捕获到的异常信息。

1)实验源程序:

public class TestException {

public static void main(String[] args){

outofBound();

arraySize();

nullPointer();

}

static void arraySize(){

try{int p=-5;

int test1[]=new int[p]; //不一定要是-5,只要小于0的就能捕获到无效数组长度的异常}

}

catch (NegativeArraySizeException e) {

System.out.println("捕获异常:\n"+e);

System.out.println(e.toString()); //把捕获的错误异常转变为字符串类型,传给println()方法,用以输入。

}finally{

System.out.println("捕获完成\n"); } }

static void outofBound(){

try {int test2[]=new int[10];

test2[100]=1; //超出数组长度

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("捕获异常:\n"+e);

System.out.println(e.toString());

}

finally{

System.out.println("捕获完成\n\n");

}

}

static void nullPointer(){

try {int test3[]=null;

test3[1]=100; //空指针无法赋值

} catch (NullPointerException e) {

主要实验记录及个人小结

(包括部分实验源程序、调试结果及实验结果分析等) System.out.println("捕获异常:\n"+e);

System.out.println(e.toString());

}

finally{

System.out.println("捕获完成 \n\n")}

}

}

2)调试结果:

将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?如果没错误,执行程序看结果有什么不同?

static void outofBound(){

try { int test2[]=new int[10];

test2[100]=1; //超出数组长度

} //catch (ArrayIndexOutOfBoundsException e) {

// System.out.println("捕获异常:\n"+e);

// System.out.println(e.toString());

// }

主要实验记录及个人小结

(包括部分实验源程序、调试结果及实验结果分析等)将array方法重新定义为如下形式:

void arraySize() throws NegativeArraySizeException{……}

然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部

分。

public class TestException {

public static void main(String[] args){

try{

outofBound();

arraySize();

nullPointer();

}

catch(NegativeArraySizeException e)

{System.out.println(e.toString());}

}

......

(中间代码不变)

static void nullPointer(){

try {

int test3[]=null;

test3[1]=100; //空指针无法赋值

} catch (NullPointerException e) {

System.out.println("捕获异常:\n"+e);

System.out.println(e.toString());

}

finally{

System.out.println("捕获完成 \n\n");

}

}

}

主要实验记录及个人小结

(包括部分实验源程序、调试结果及实验结果分析等)2.编写程序实现如下功能:计算两个数之和,参与求和运算的每个数的值都必须在10-20之间,当任意一个数超出范围时,抛出自己的异常。

1)实验源程序:

public class SelfException

{

public static void selfExceptionTest(int a,int b) throws NumberRangeException

{

int answer;

if(( a>10& b <20)&( a>10& b<20))

{ answer=a+b;

System.out.println("两数之和为:"+answer);}

e lse

throw new NumberRangeException("错误");

}

public void manager(){

try{selfExceptionTest(55,100);

}catch(NumberRangeException e)

{

System.out.println("输入数值超出范围,应该为10-20之间的整数");

}

}

public static void main(String args[])

{

SelfException s=new SelfException();

s.manager();

}

}

class NumberRangeException extends Exception{

public NumberRangeException(String message){

super(message);

}

}

2)调试结果:

3.思考题:

1)翻译下列常用异常类的描述信息

OutOfMemoryError

A class instance creation expression, array creation expression , or string concatenation operatior expression throws an OutOfMemoryError if there is insufficient memory available.

翻译:

内存溢出错误

如果没有足够的内存空间,一个类的实例创建的表达式,数组创建的表达式,或者一个字符串连接符表达式抛出一个内存溢出的错误.

NegativeArraySizeException

An array creation expression throws a NegativeArraySizeException if the value of any dimension expression is less than zero.

翻译:

创建大小为负的数组的异常

任何维度表达式的值小于零,则数组创建的表达式抛出一个创建大小为负的数组的异常.

NullPointerException

A field access throws a NullPointerException if the value of the object reference expression is null.

A method invocation expression that invokes an instance method throws a NullPointerException if the target reference is null.

An array access throws a NullPointerException if the value of the array reference expression is null.

翻译:

空指针异常

如果对象引用表达式的值是空的,一个字段的访问抛出一个空指针异常。

如果是空的目标参考,一个方法调用表达式调用一个实例方法抛出一个空指针异常,。

如果数组引用表达式的值是空,数组访问抛出一个空指针异常。

ArrayIndexOutOfBoundsException

An array access throws an ArrayIndexOutOfBoundsException if the value of the array index expression is negative or greater than or equal to the length of the array. 翻译:

用非法索引访问数组时抛出的异常

异常数组访问抛出一个用非法索引访问数组时抛出的异常,如果数组索引表达式的值是负或大于等于数组的长度。

ClassCastException

Thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:

Object x = new Integer(0);

System.out.println((String)x);

翻译:

强制类型转换错误异常

异常抛出,以指示代码试图将对象转换为一个子类,它不是一个实例。

例如,以下代码将生成一个ClassCastException:

对象x =新的整数(0);

输出((字符串)X);

ArithmeticException

Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class.

翻译:

算数异常

当发生了一个特殊的算术条件时抛出。例如,一个整数“除以零”抛出这个类的一个实例。ArrayStoreException

An assignment to an array component of reference type throws an ArrayStoreException when the value to be assigned is not compatible with the component type of the array.

翻译:

数组存储异常

分配一个引用类型的数组组件时,将抛出一个数组存储异常,要分配的值与数组的类型不兼容。NoSuchFieldException

Signals that the class doesn't have a field of a specified name.

翻译:

无指定字段的异常

发出信号表明类没有指定名称的字段。

NoSuchMethodException

Thrown when a particular method cannot be found

翻译:

无指定方法的异常

当一个特定的方法无法找到时抛出.

NumberFormatException

Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format. 翻译:

数字格式异常

抛出时表示应用程序试图将字符串转换为数值类型之一,但该字符串无适当的格式。FileNotFoundException

Signals that an attempt to open the file denoted by a specified pathname has failed. 翻译:

指定文件未找到异常

发出信号表示试图打开一个指定路径名表示的文件已经失败。

IOException

Signals that an I/O exception of some sort has occurred. This class is the general class of exceptions produced by failed or interrupted I/O operations

翻译:

输入异常

发生某种I / O异常信号。这个类是失败或中断的,I / O操作所产生的异常类.

2)编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。如果输入的参数个数为1、2、3则它们应分别对应正方形、长方形、三角形,如果参数值为0,则异常处理方法显示错误消息。

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.StringTokenizer;

abstract class Father{

abstract void area();

}

class Tr extends Father {

double a;

double b;

double c;

Tr(double a,double b,double c){

this.a=a;

this.b=b;

this.c=c;

}

void area() {

double s;

float l;

l=(float) ((a+b+c)/2);

s=Math.sqrt(l*(l-a)*(l-b)*(l-c));

System.out.println("三角形的面积是:"+s);

}

}

class Zf extends Father{

int a;

Zf(double a){

this.a=(int) a;

}

public void area() {

float s;

s=a*a;

System.out.println("正方形的面积是:"+s);

}

class Cf extends Father{

double a;

double b;

Cf(double a,double b){

this.a=a;

this.b=b;

}

void area(){

float s;

s=(float) (a*b);

System.out.println("长方形的面积是:"+s);

}

}

class MyException extends Exception

{

private static final long serialVersionUID = 1L;

public MyException(String message){

super(message);

}

}

public class Area {

public void test(int i,double a[])throws MyException{

if(i==0)

{

System.out.print("i="+i);

throw new MyException("输入参数错误");

}

else if(i==1)

{ Zf m=new Zf(a[0]);

m.area();

}

else if(i==2)

{Cf m=new Cf(a[0],a[1]);

m.area();

}

else

{Tr m=new Tr(a[0],a[1],a[2]);

m.area();

}

public static void main(String[] args) throws MyException{ String s="";

BufferedReader

in=new BufferedReader(new InputStreamReader(System.in));

System.out.print("请输入各边边长");

try {s=in.readLine();

} catch (IOException e1) {

e1.printStackTrace();

}

int i;

double[] a=new double[3];

StringTokenizer st=new StringTokenizer(s);

for(i=0;i<3&&st.hasMoreTokens();i++)

{

a[i]=Double.parseDouble(st.nextToken());

}

try{

Area n=new Area();

n.test(i,a);

}catch(MyException e){

System.out.println("输入错误参数");

}

}

}

2)调试结果:

主要问题的出错现象:

1)运行程序后,无对应的输出结果出现

2)源程序编写完成后出现error的提示.

出错原因:

1)函数调用时候,相关函数输入变量错误

2)没有注意{}的匹配问题.

解决方法及效果:

1) 编写和调用类的方法时,注意参数的类型和数量的对应.

2) 写类和方法的时候注意要使得{}匹配.用{}将类和方法正确划分即可.

实验小结:

1) 为每个类分配正确的职责.一个类只承担一个职责(单一权责),且是正确的职责。例如,如果我们要设计一个顾客类,我们不会给它创建一个销售的行为,我们只会让它处理所有与一个客户相关的数据.

2) 给类、函数和变量使用好的命名.学会使代码中的类名、函数名已经能够告诉我们所有需要的信息。采用这种方法,会让大家的生活变得更轻松.

3) 对代码进行复查.我们都会犯错误,没有什么能比请别人对我们代码做一个非正式快速复查更好的办法来查找错误了。不要等到代码都完成以后再复查,当某些重要部分的代码完成后,或者离上一次复查相隔几天之后,就进行复查.

4) 选择编写短小的函数.代码会更容易阅读,更容易重用,更易于测试.

5)通过此次上机自己对Java面向对象的程序设计有了更深刻的了解这对自己以后的学习是相当有帮助的,也是我对这门语言有了更浓厚的兴趣.

java实验报告总结

java实验报告总结 导语:在这次实训里,让我知道还有很多地方的不足,还有许多的技术等着我去摸索,等着我去学习。下面是由小编为你整理的java实验报告总结,欢迎大家阅读。 java实验报告总结篇一伴随着新年钟声的到来,我不知道我是否是应该高兴还是悲伤。因为伴随自己三个月的华迪实训即将结束。转眼之间三个月的华迪实训就这样在忙碌中过去了。通过此次短暂的java开发习,回顾一下自己这三个月的每一天,觉得过的十分的充实,每天都有一堆忙不完的事。因为你每天想起的第一件事情就是完成自己的项目模块,哪些地方不够,哪些需要修改。渐渐的发觉,自己对自己所担任角色的认知:从原先的学生到现在“程序员”的转变。“任何一个初具规模的软件都是要团队来配合的”这是我一向的认知。因为你再全能程序员也有出纰漏的地方,你程序写的再好,那也只是你一个人的程序。 因为对于程序来说,可读性、可理解性是一项衡量它是否优秀的一个标准。所以就有了我们6位成员的项目组。在项目组中,我担任组员这一角色,这相当于一个正规项目的“项目开发人员”,感觉自己身上的担子挺重,因为要配合其他组员的进度并完成自己任务从而使得项目能够成功地,完整地把它应有的功能实现。对于项目中遇到的困难,我觉得那就是经验不足,会遇到很多问题但也培养了我们上网搜

索查询,咨询老师同学的良好习惯,让我相信任何困难都有被解决的一天。 所以从整个项目来说,自己在编码上遇到的太棘手的问题都是大家集体解决。但是总的来说,这次课程设计对我很有帮助,让我获益匪浅,期间时间虽短但是也学到了不少的知识。在这次实训过程中,我发现平时学习的知识与实践环节所用到的有一定的差距,往往我觉得自己掌握的很好或者自认为熟练的技术却在此次实践环节中往往出问题,书本上的知识只提供方法的借鉴,实践中自己必须摸索出适合具体工作的方法,这一切都离不开钻研精神与勤学好问的精神。 总的来说,这次培训效果不错,对自己有一定的提升,这完全不同与学校的学习,因为它更加贴近工作,针对以后工作的内容作了很多实例的练习与工具的使用,为我们更快的加入工作提供的很好的前提。并且在这次实训里,让我知道还有很多地方的不足,还有许多的技术等着我去摸索,等着我去学习。最后,感谢公司的几位老师辛勤的工作,我们的开心来自你们的热心与关心。祝你们工作顺利。 java实验报告总结篇二此次只实习了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对Java有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对

JAVA实验3-异常处理和常用实用类-报告

信息工程学院1 《Java语言程序设计》实验报告 学院: 班级: 姓名: 学号: 成绩: 一、实习目标 (1)掌握Java的异常处理机制及相关实现方法; (2)掌握常用实用类的使用,熟悉使用JDK_API进行软件开发; (3)掌握Java中正则表达式的基本用法。 二、实验过程 实验题1 try-catch练习: JAVA_API: getMassage():返回此throwable或exception的详细消息字符串,正数除0 返回Infinity,负数除0返回-Infinity。 toString():对象利于null的详细消息字符串创建,则返回此对象的实际类的 名称,返回此throwable的简短描述。 printStackTrace():将错误的详细信息追踪到代码中具体某一行,将throwable 及其追踪输出至标准错误流。 代码截图: CatchError类: 实验报告的内容与格式按任课教师的要求书写。

MainTest类:

运行结果: 实验题2 用户自定义异常: 在ExceptionTest类中进行成绩录入和平均成绩的计算。 StasticScore类为成绩录入的具体方法,并进行异常检测。 ScoreException类继承StasticScore,输出错误提示。 代码截图: ExceptionTest类: ScoreException类:

StasticScore类:

运行结果:

实验题3 String & StringBuffer的使用: JAVA_API: Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,返回-1。 Static String valueOf(int i)函数:返回int参数的字符串表示形式。该表示形式正是单参数的interger.toString方法返回的结果。 Int indexOf(String str, int fromIndex)函数:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。如果不存在,则返回-1。 Public StringBuffer append(String str)函数:将指定的字符串追加到此字符序列。按顺序追加String变量中的字符,使此序列增加到该变量的长度。 代码截图: TestOfKeyword类:

数据分析实验报告

数据分析实验报告 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

第一次试验报告 习题1.3 1建立数据集,定义变量并输入数据并保存。 2数据的描述,包括求均值、方差、中位数等统计量。 分析—描述统计—频率,选择如下: 输出: 统计量 全国居民 农村居民 城镇居民 N 有效 22 22 22 缺失 均值 1116.82 747.86 2336.41 中值 727.50 530.50 1499.50 方差 1031026.918 399673.838 4536136.444 百分位数 25 304.25 239.75 596.25 50 727.50 530.50 1499.50 75 1893.50 1197.00 4136.75 3画直方图,茎叶图,QQ 图。(全国居民) 分析—描述统计—探索,选择如下: 输出: 全国居民 Stem-and-Leaf Plot Frequency Stem & Leaf 5.00 0 . 56788 数据分析实验报告 【最新资料,WORD 文档,可编辑修改】

2.00 1 . 03 1.00 1 . 7 1.00 2 . 3 3.00 2 . 689 1.00 3 . 1 Stem width: 1000 Each leaf: 1 case(s) 分析—描述统计—QQ图,选择如下: 输出: 习题1.1 4数据正态性的检验:K—S检验,W检验数据: 取显着性水平为0.05 分析—描述统计—探索,选择如下:(1)K—S检验

结果:p=0.735 大于0.05 接受原假设,即数据来自正太总体。 (2 )W 检验 结果:在Shapiro-Wilk 检验结果972.00 w ,p=0.174大于0.05 接受原假设,即数据来自正太总体。 习题1.5 5 多维正态数据的统计量 数据:

C异常处理(精)

#include "stdafx.h" #include #include #include // 内存泄露检测机制 #define _CRTDBG_MAP_ALLOC #ifdef _DEBUG #define new new(_NORMAL_BLOCK, __FILE__, __LINE__ #endif // 自定义异常类 class MyExcepction { public: // 构造函数,参数为错误代码 MyExcepction(int errorId { // 输出构造函数被调用信息 std::cout << "MyExcepction is called" << std::endl; m_errorId = errorId; } // 拷贝构造函数 MyExcepction( MyExcepction& myExp { // 输出拷贝构造函数被调用信息 std::cout << "copy construct is called" << std::endl; this->m_errorId = myExp.m_errorId; }

~MyExcepction( { // 输出析构函数被调用信息 std::cout << "~MyExcepction is called" << std::endl; } // 获取错误码 int getErrorId( { return m_errorId; } private: // 错误码 int m_errorId; }; int main(int argc, char* argv[] { // 内存泄露检测机制 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ; // 可以改变错误码,以便抛出不同的异常进行测试 int throwErrorCode = 110; std::cout << " input test code :" << std::endl; std::cin >> throwErrorCode; try { if ( throwErrorCode == 110 { MyExcepction myStru(110;

java实训报告总结

java实训报告总结 java实训报告总结 作为就业培训,项目的好坏对培训质量的影响十分大,常常 是决定性的作用。这篇文章是关于在学习JAVA软件开发时练习项 目的总结,简单总结为以下几点:作为就业培训,项目的好坏对 培训质量的影响十分大,常常是决定性的作用。这篇文章是关于 在学习JAVA软件开发时练习项目的总结,简单总结为以下几点:1、项目一定要全新的项目,不能是以前做过的2、项目一定要企 业真实项目,不能是精简以后的,不能脱离实际应用系统3、在开发时要和企业的开发保持一致4、在做项目的时候不应该有参考代码长话短说就是以上几点,如果你想要的了解,可以继续往后看。一:项目的地位因为参加就业培训的学员很多都是有一定的计算 机基础,大部分都具备一定的编程基础,尤其是在校或者是刚毕 业的学生,多少都有一些基础。他们欠缺的主要是两点:(1)不 能全面系统的、深入的掌握某种技术,也就是会的挺多,但都是 皮毛,不能满足就业的需要。(2)没有任何实际的开发经验,完 全是想象中学习,考试还行,一到实际开发和应用就歇菜了。解 决的方法就是通过项目练习,对所学知识进行深化,然后通过项 目来获取实际开发的经验,从而弥补这些不足,尽快达到企业的 实际要求。二:如何选择项目项目既然那么重要,肯定不能随随 便便找项目,那么究竟如何来选择呢?根据Java的研究和实践经

验总结,选择项目的时候要注意以下方面:1:项目不能太大,也 不能太小这个要根据项目练习的阶段,练习的时间,练习的目标 来判断。不能太大,太大了做不完,也不能太小,太小了没有意义,达不到练习的目的。2:项目不能脱离实际应用系统项目应该 是实际的系统,或者是实际系统的简化和抽象,不能够是没有实 战意义的教学性或者是纯练习性的项目。因为培训的时间有限, 必须让学员尽快地融入到实际项目的开发当中去。任何人接受和 掌握一个东西都需要时间去适应,需要重复几次才能够真正掌握,所以每个项目都必须跟实际应用挂钩。 3:项目应能覆盖所学的 主要知识点学以致用,学完的知识点需要到应用中使用,才能够 真正理解和掌握,再说了,软件开发是一个动手能力要求很高的 行业,什么算会了,那就是能够做出来,写出代码来,把问题解 决了,你就算会了。4:最后综合项目一定要是实际应用系统学员 经过这个项目的练习,就要走上实际的工作岗位了,如果这个系 统还达不到实际应用系统的标准,学员练习过后也还是达不到企 业实际的需要,那么这个培训应该说质量就不高了。理想的状况 是这个项目就是实际项目,到时候学员就业到另外一个公司,不 过是换个地方干活而已,完全没有技能上的问题。 123456下一页java实训报告总结 三:Java怎么选择项目这个不是靠想象,而是根据实际的情 况一步一步分析出来的(呵呵要卖弄一下:这也算是逻辑思维),当然这里只是讨论方法,不涉及具体的项目案例。我们可以采用

JAVA异常实验报告

一. 实验目的及实验环境 实验目的:1.理解JA V A对异常的处理 2.掌握自定义异常的定义方式 实验环境:eclipse 4.4 二. 实验内容 1.假设Sum类中有一个addContinue(int n)方法,当n>0时,方法翻译1+2+…+n 的和;当n<0时,方法抛出一个受检查的ArgumentException异常。ArgumentException类应该提供一个能够接受并保存n值得构造方法,以及一个能返回n值得实例方法,现定义Sum类以及ArgumentException类,并编程测试它们。 三.方案设计 1.定义三个类Sum,ArgumentException,Test类 2.分别在类中实现加法,异常抛出和测试 四.测试数据及运行结果 1.正常测试数据(3组)及运行结果;

2.非正常测试数据(2组)及运行结果。 五.总结 1.实验过程中遇到的问题及解决办法; ①中没有明确表示需要进行异常抛出很有可能就会忘记这个题目存在的问题。所以平常程序设计时,应该多考虑不同的情况,防止程序出现不可逆的漏洞。 ②如果发生可识别的运行错误,系统应产生一个相应的异常类对象,并进一步寻找异常处理代码来处理它,确保程序能从故障中恢复,之程序能够运行下去,直

到结束。 2.对设计及调试过程的心得体会。 中断,影响程序正常运行的事件称为异常。异常处理是使程序从故障中恢复,他包括提示异常信息、不产生无效结果和释放资源三方面内容。其中,显示异常信息和不产生无效结果可通过try和catch块来实现,释放资源可通过finally块实现。 附代码 public class Add { public int addContinue(int i) throws ArgumentException{ int sum=0; if( i<0){ throw new ArgumentException(i); } for(int n=0;n<=i;n++){ sum=sum+n; } return sum; } } public class ArgumentException extends Exception { private int n; public ArgumentException(int n) { this.n = n; } public int getN(){ return n; } } public class test { public static void main(String[] args){ Add s = new Add(); try { System.out.println(s.addContinue(-1)); } catch (ArgumentException e) { System.out.println(e.getN()); } } }

数据库上机实验报告

数据库实验 (第三次) 题目1 实验内容: 1. 检索上海产的零件的工程名称; 2. 检索供应工程J1零件P1的供应商号SNO; 3. 检索供应工程J1零件为红色的供应商号SNO; 4. 检索没有使用天津生产的红色零件的工程号JNO; 5. 检索至少用了供应商S1所供应的全部零件的工程号JNO; 6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数 量QTY降序排列。

1 select jname from j where jno in (select jno from spj where sno in (select sno from s where city ='上海' ) ); 2 select sno from spj where jno ='j1'and pno ='p1' 3

selectdistinct sno from spj where pno in (select pno from p where color='红'and pno in (select pno from spj where jno ='j1' ) ); 4 selectdistinct jno from spj where pno notin (select pno from p where color ='红'and pno in (select pno from spj where sno in (select sno from s where city ='天津' ) ) )

5 select jno from spj where sno ='s1' 6 select jno,qty from spj where pno ='p1' orderby qty desc 四﹑思考题 1.如何提高数据查询和连接速度。 建立视图 2. 试比较连接查询和嵌套查询 有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比 嵌套查询高出很多 当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。但是相比于连接运算,目前商用关系数据库管理系统对嵌套查询的优化做的还不够完善,所以在实际应用中,能够用连接运算表达的查询尽可能采用连接运算。

JAVA实训总结

J A V A程序设计课程实训报告 一、实训目的 知识目标 1.了解图形用户界面的编程思路及方法; 2.了解事件及事件处理机制; 3.掌握常用的图形用户界面组件; 4.掌握容器布局的设置方法及组件的添加方法; 5.掌握常见事件类型及事件处理方法; 能力目标 1.与客户沟通的基本能力; 2.团队协作的基本能力; 3.编程的良好习惯; 4.软件调试和测试的能力; 5.查阅文献的能力; 二、项目设置: 1、实训内容 利用所学Java程序设计语言实现一个图形化的计算器。 2、实训要求 1.程序运行正常无误,系统层次清晰合理; 2.实训内容里的要求必须要全面实现; 3.实训过程中要仔细操作,细心观察,勤于思考,注意记录; 4.实训报告要做到文字通畅、论点正确、论述有据; 5.要求学生在指导教师的指导下,独立完成实训的全部内容; 6.在规定时间内完成实训的全部任务,并按规定格式上交实训报告; 三、实训设备 硬件:个人电脑、 软件:、JDK1.6.0_23 四、实训过程 以上的图表示实训编写的程序没有错误,可以正常的运行

以上的图是运行程序时所显示出来的小小计算机的界面 为了实际的运行一下计算机的功能,此时输入1加2 此时计算机上显示的是数字1和数字2相加的结果,3. 为了实际的运行一下计算机的功能,此时输入数字1乘数字2 此时计算机上显示的是数字1和数字2相乘的结果,2. 因为上述的两个小算数成功的运算出正确的结果所以此时关闭小小简单计算机的界面此时出现的编程图面为: 计算机程序的源码: .*; import .*;,insert); addButton("=",command); addButton("+",command); add(panel,; } privatevoidaddButton(Stringlabel,ActionListenerlistener) { JButtonbutton=newJButton(label); (listener); (button);//按钮监听器类,用于显示 } privateclassInsertActionimplementsActionListener { publicvoidactionPerformed(ActionEventevent) { Stringinput=(); if(start) { (""); start=false;

java异常处理例题代码教学文稿

j a v a异常处理例题代 码

App9_1.java:输出一个数组的所有元素,捕获数组下标越界异常和除娄为0异常。public class App9_1{ public static void main(String args[]){ int i; int[] a={1,2,3,4}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.println("5/0"+(5/0)); } } App9_2.java:使用try-catch-finall语句对程序中的异常进行捕获与处理。 public class App9_2{ public static void main(String args[]){ int i; int a[]={1,2,3,4}; for (i=0;i<5;i++){ try{ System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e){ System.out.print("捕获到了数组下标越界异常"); } catch(ArithmeticException e){ System.out.print("异常类名称是:"+e); //显示异常信息 } catch(Exception e){ System.out.println("捕获"+e.getMessage()+"异常!"); //显示异常信息 } finally{ System.out.println(" finally i="+i); } } System.out.println("继续!!"); } } App9_3.java:使用throw语句在方法中抛出异常。 public class App9_3{ public static void main(String args[]){ int a=5,b=0; try{ if (b==0) throw new ArithmeticException(); //抛出异常,不是必须的 else System.out.println(a+"/"+b+"="+a/b); //若不抛出异常,则运行此行

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

java实验心得体会范例精选(最新)

java实验心得体会范例精选【1】 此次只实验了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对java有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,更学到了很多做人的道理,对我来说受益非浅。除此以外,我知道了什么叫团队,怎样和团队分工合作;同时我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。这也是第一次让我亲身感受到理论与实际的相结合,让我大开眼界。也是对以前所学知识的一个初审吧!这次实验对于我以后学习、找工作也是受益菲浅的,在短短的三周中相信这些宝贵的经验会成为我今后成功的重要的基石;这对于我的学业,乃至我以后人生的影响无疑是极其深远的。 这次实验虽然是我们的第一次,不过同学们表现不错,由此看来,我们在进入大学的这几个月里学到了不少的专业知识,只是自己感觉不到而已。对于所学专业,我们不能过于自卑和担忧,否则会妨碍自己学习。实验是学习java的重要环节,有利于我们巩固专业知识、掌握工作技能,提高就业筹码。 我把本次为期三周的实验看作是“理论与实践相结合的桥梁”。通过这周的实验和学习,我知道了此次实验的目的,也清楚目前自己的不足,那就是缺乏相应的知识与经验,对所学的专业知识不能够很好地运用于实践操作。正所谓“百闻不如一见”,经过这次自身的切身实践,我才深切地理会到了“走出课堂,投身实践”的必要性。平时,我们只能在课堂上与老师一起纸上谈兵,思维的认识基本上只是局限于课本的范围之内,也许就是这个原因就导致我们对专业知识认识的片面性,使得我们只知所以然,而不知其之所以然!限制了我们网络知识水平的提高。但是课本上所学到的理论知识是为我们的实际操作指明了方向、提供相应的方法,真正的职业技巧是要我们从以后的实际工作中慢慢汲取的。而针对实际操作中遇到的一些特殊的问题,我们不能拘泥于课本,不可纯粹地“以本为本”。 在这次实验中我得到了许多收获,我第一次体会到java工程师的工作是什么样子的,也发现了很多不曾注意到的细节,在实验的演示过程中,我对作为一名java工程师注意的事项应该从小事做起、从基本做起。把职业能力训练与职业素质有机的结合起来。相信这对我接下来学习专业知识会起到很有效的帮助,在接下来的几个月里,我会以作为一名职业人的身份在这几个方面要求自己,严格自我,向java工程师靠近。 而经过这次实验,让我明白如果是一个完整项目的开发,必须由团队来分工合作,否则,即费力又费时还做不好这个项目。因此不管在工作中还是在生活中要和老师、同学保持良好的关系是很重要的。做事首先要学做人,要明白做人的道理,如何与人相处是现代社会的做人的一个最基本的问题。对于自己这样一个即将步入社会的人来说,需要学习的东西很多,他们就是的老师,正所谓“三人行,必有我师”,我们可以向他们学习很多知识、道理。

Java实验报告 继承、多态、接口和异常处理

实验5 继承、多态、接口和异常处理 一、实验目的 1、掌握Java的类和对象的声明和使用方法; 2、掌握Java的类的继承和实现方法; 3、掌握多态性在类的继承中的运用; 4、掌握接口的定义与使用; 5、掌握基本异常的处理机制; 6、熟悉try语句与catch语句的搭配使用; 7、了解有异常处理与没有异常处理的差别; 8、多重catch语句的使用; 9、使用Throws声明异常和Throw抛出异常。 二、实验环境 1、PC微机; 2、DOS操作系统或 Windows 操作系统; 3、Java sdk程序开发环境、eclipse集成环境。 三、实验内容 1. 设计三个类,分别是学生类Student,本科生类UnderGraduate,研究生类 Postjgraduate,其中Student类是一个抽象类,它包含学生的基本信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate类都是Student类的子类,这两个类计算课程成绩等级的方法有所不同,如下表所示。假设某班级里既有研究生又有本科生,编写程序统计出全班学生 2. 和 Mobilephone具体实现,并设计一个应用程序类来使用这些类。 3.要求设计一个GUI图形窗口程序,该程序让用户输入一个星期中的任意一天的数字1-7,然后输出该数字所对应的是星期几。 四、实验步骤 实验内容一

1.建立package experiment5_1,其最终目录结构如下: 2.建立Student类: package experiment5_1; public abstract class Student { final static int CourseNo = 3; String name; String type; int[] courses; String courseGrade; public Student(String name) { https://www.360docs.net/doc/467833378.html, = name; courses = new int[CourseNo]; courseGrade = "" ; } public abstract void calculateGrade(); public String getName( ) { return name; } public String getType( ) { return type ; } public String getCourseGrade( ) { return courseGrade; } public int getCourseScore(int courseNumber) { return courses[courseNumber]; } public void setName(String name) { https://www.360docs.net/doc/467833378.html, = name; } public void setType(String type) { this.type = type; } public void setCourseScore(int courseNumber, int courseScore) { //按课程索引号设置课程成绩 this.courses[courseNumber] = courseScore ; } }

JAVA 异常处理实验报告

实验三异常处理 [实验目的] 1.掌握异常处理方法及熟悉常见异常的捕获方法。 [实验内容] 1.练习捕获异常、声明异常、抛出异常的方法、熟悉try和catch 子句的使用。 [实验步骤与要求] 第1题异常处理 要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类。再声明一个People类,该类中的void printLetter(char c)方法抛出NoLowerLetter异常类对象,void PrintDigit(char c)方法抛出NoDigit异常类对象。 [作业提交] 将代码贴在下面: class NoLowerLetter extends Exception{ String message; NoLowerLetter(char c){ message=c+"不是正数"; } public String getMessage(){ return message; } } class NoDigit extends Exception{ String message; NoDigit(char c){ message=c+"不是偶数"; }

public String getMessage(){ return message; } } class People{ public void printLetter(char c) throws NoLowerLetter{ if(c<0){ NoLowerLetter ex=new NoLowerLetter(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } public void PrintDigit(char c) throws NoDigit{ if(c%2!=0){ NoDigit ex=new NoDigit(c); throw(ex); } double number=Math.sqrt(c); System.out.println(c+"的平方根:"+number); } } public class bianma{ public static void main(String args[]){ People p=new People(); try{ p.printLetter('Q'); p.printLetter(' '); } catch( NoLowerLetter e){ System.out.println(e.getMessage()); } try{ p.PrintDigit('d'); p.PrintDigit('a'); } catch( NoDigit e){ System.out.println(e.getMessage()); } } } 将结果运行截屏贴在下面:

数据分析实验报告

数据分析实验报告 【最新资料,WORD文档,可编辑修改】 第一次试验报告 习题1.3 1建立数据集,定义变量并输入数据并保存。 2数据的描述,包括求均值、方差、中位数等统计量。 分析—描述统计—频率,选择如下: 输出:

方差1031026.918399673.8384536136.444百分位数25304.25239.75596.25 50727.50530.501499.50 751893.501197.004136.75 3画直方图,茎叶图,QQ图。(全国居民) 分析—描述统计—探索,选择如下: 输出: 全国居民Stem-and-Leaf Plot Frequency Stem & Leaf 9.00 0 . 122223344 5.00 0 . 56788 2.00 1 . 03 1.00 1 . 7 1.00 2 . 3 3.00 2 . 689

1.00 3 . 1 Stem width: 1000 Each leaf: 1 case(s) 分析—描述统计—QQ图,选择如下: 输出: 习题1.1 4数据正态性的检验:K—S检验,W检验数据: 取显着性水平为0.05 分析—描述统计—探索,选择如下:(1)K—S检验 单样本Kolmogorov-Smirnov 检验 身高N60正态参数a,,b均值139.00

标准差7.064 最极端差别绝对值.089 正.045 负-.089 Kolmogorov-Smirnov Z.686 渐近显着性(双侧).735 a. 检验分布为正态分布。 b. 根据数据计算得到。 结果:p=0.735 大于0.05 接受原假设,即数据来自正太总体。(2)W检验

java实验报告心得体会

java实验报告心得体会 联合大学信息学院 “面向对象程序设计”课 程上机实验报告 题目: JAVA上机实验心得体会 姓名(学号):专业:计算机科学与技术 编制时间: xx年12月19日 版本: 1.0.0 指导教师:联合大学-信息学院编制 实验1 熟悉Java运行环境 实验目的:熟悉JDK环境和操作,编写简单的Java应用程序。

心得体会:在该实验中,我碰到的问题是JDK环境变量的设置。解决方法是通过查阅资料书和网上搜索相关解决方法及同学的有力 帮助。 实验2 选择语句练习 实验目的:正确理解并能够熟练操作和使用Java的if和switch 语句。 心得体会:我个人感觉有了C的编程基础,if和switch这些简单的流程控制语句运用起来比较轻松,实现简单的逻辑运算也跟C非常相近,所以上手比较快。但是在这次程序中,首次涉及到了java 程序的数据输入,与C区别很大。但经过老师的讲解和查阅相关资料,基本明白相关的使用规则和注意事项。在第二个小题中还涉及到了charAt()方法,经查阅JDK文档,知道charAt()方法返回一个位于提供给它的参数索引处的字符,如: str.chatAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符。我运用此方法解决了比较字符串间首字母异同的问题。 实验3 迭代练习

实验目的:正确理解并能够熟练操作和使用Java的for、while、do..while语句。心得体会:在该实验中,我学会了为具体操作选 择最合适的循环语句及for、while、do..while语句的相互转换使用。最重要的是,明白了JAVA程序中,定义方法中的局部变量时一定要 赋初始值,否则编译不能通过会报错;但类中的成员变量则不一定需要。如我在实验3main()方法定义的整型局部变量mand,当不初始化则不能通过编译。原因是局部变量不能有JVM自动赋给相关的默认值,而成员变量可以。 实验4 方法的实现练习 实验目的:声明、定义和调用方法,理解实参和形参的含义。 心得体会:在该实验中,我掌握如何写方法、调用方法,并掌握 如何向方法中传递信息和从方法中返回信息。方法声明为非void(构造方法除外)则需要用return语句返回一个相应类型的返回值。 实验5 简单类型数组练习 实验目的:学习创建简单类型的数组,并能用循环语句处理数组。

JAVA异常处理实验报告

实验报告 实验名称:异常处理 学院:电子信息工程学院 班级:电信01班 姓名:鲁川 学号: 121040110113 日期: 2014.11.3 成绩:

一、实验名称:异常处理 二、实验目的: 1.掌握异常处理机制的运作 2.掌握处理异常的几个子句:try…catch..finally、thorws和throw 3.掌握字符串类的相关操作 三、实验内容: 1. 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数 组元素,使其产生ArrayIndexOutOfBoundsException异常。在catch子句里捕获此异常对象,并且打印“数组越界”信息,加一个finally子句,打印一条信息以证明这里确实得到了执行。 2. 给定一个字符串,将字符串中的所有大写字母变成小写字母,数字用0来代替,其他符号用#代替。 四、实验代码 1.ExceptionDemo.java class ExceptionDemo { public static void main(String[] args) { int [] arr = new int[]{13,24,1,53,24}; try { int num = arr[5]; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界啦!!!"); } finally { System.out.println("此处代码一定会执行的--finally"); } } } 运行结果:

2.StringTest.java class StringTest { public static void main(String[] args) { String str = "DfS分手dsA吧25J奋45斗"; System.out.println("原字符串=="+str); StringBuffer sb = new StringBuffer(); for(int i = 0;i='A' && ch<='Z') { sb.append(Character.toLowerCase(ch)); } else if(ch>='a' && ch<='z') { sb.append(ch); }else if(ch>=49 && ch<=58) { sb.append(0); }else { sb.append("#"); }

C异常处理实现

C异常处理实现: setjmp和longjmp 此文为internet上选摘,过后我会用自己的理解补充此文。 ------------ 将对setjmp与longjmp的具体使用方法和适用的场合,进行一个非常全面的阐述。 另外请特别注意,setjmp函数与longjmp函数总是组合起来使用,它们是紧密相关的一对操作,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,才能按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 与goto语句的作用类似,它能实现本地的跳转 这种情况容易理解,不过还是列举出一个示例程序吧!如下: void main( void ) { int jmpret; jmpret = setjmp( mark ); if( jmpret == 0 ) { // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(1) longjmp(mark, 1); // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(2) longjmp(mark, 2); // 其它代码的执行 // 判断程序远行中,是否出现错误,如果有错误,则跳转! if(-1) longjmp(mark, -1); // 其它代码的执行 } else { // 错误处理模块 switch (jmpret) { case 1: printf( "Error 1"n");

break; case 2: printf( "Error 2"n"); break; case 3: printf( "Error 3"n"); break; default : printf( "Unknown Error"); break; } exit(0); } return; } 上面的例程非常地简单,其中程序中使用到了异常处理的机制,这使得程序的代码非常紧凑、清晰,易于理解。在程序运行过程中,当异常情况出现后,控制流是进行了一个本地跳转(进入到异常处理的代码模块,是在同一个函数的内部),这种情况其实也可以用goto语句来予以很好的实现,但是,显然setjmp与longjmp的方式,更为严谨一些,也更为友善。程序的执行流如图17-1所示。

相关文档
最新文档