JAVA调试环境及异常处理程序.docx

上传人:b****2 文档编号:13965765 上传时间:2023-06-19 格式:DOCX 页数:16 大小:225.22KB
下载 相关 举报
JAVA调试环境及异常处理程序.docx_第1页
第1页 / 共16页
JAVA调试环境及异常处理程序.docx_第2页
第2页 / 共16页
JAVA调试环境及异常处理程序.docx_第3页
第3页 / 共16页
JAVA调试环境及异常处理程序.docx_第4页
第4页 / 共16页
JAVA调试环境及异常处理程序.docx_第5页
第5页 / 共16页
JAVA调试环境及异常处理程序.docx_第6页
第6页 / 共16页
JAVA调试环境及异常处理程序.docx_第7页
第7页 / 共16页
JAVA调试环境及异常处理程序.docx_第8页
第8页 / 共16页
JAVA调试环境及异常处理程序.docx_第9页
第9页 / 共16页
JAVA调试环境及异常处理程序.docx_第10页
第10页 / 共16页
JAVA调试环境及异常处理程序.docx_第11页
第11页 / 共16页
JAVA调试环境及异常处理程序.docx_第12页
第12页 / 共16页
JAVA调试环境及异常处理程序.docx_第13页
第13页 / 共16页
JAVA调试环境及异常处理程序.docx_第14页
第14页 / 共16页
JAVA调试环境及异常处理程序.docx_第15页
第15页 / 共16页
JAVA调试环境及异常处理程序.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA调试环境及异常处理程序.docx

《JAVA调试环境及异常处理程序.docx》由会员分享,可在线阅读,更多相关《JAVA调试环境及异常处理程序.docx(16页珍藏版)》请在冰点文库上搜索。

JAVA调试环境及异常处理程序.docx

JAVA调试环境及异常处理程序

数学与计算科学学院

实验报告

实验项目名称JAVA调试环境及异常处理程序

所属课程名称面向对象技术

实验类型设计型

实验日期2014-4-1

班级信计12-2班

学号

姓名

成绩

 

一、实验概述:

【实验目的】

1.掌握Java的开发环境及基本知识;

2.掌握Java工程项目的基本建立过程和程序实现;

3.掌握Java程序的实现以及调试运行;

4.掌握Java程序中常见的异常处理;

5.识记类的结构;

6.掌握构造函数的基本形式;

7.掌握方法的基本形式;

8.识记Java类库中常见的异常类;

9.掌握Java类库中类的引用以及程序员自定义类。

【实验原理】

1.Java的工作原理  

Java语言引入了Java虚拟机,具有跨平台运行的功能,能够很好地适应各种Web应用。

同时,为了提高Java语言的性能和健壮性,还引入了如垃圾回收机制等新功能,通过这些改进让Java具有其独特的工作原理。

2Applet的基本工作原理:

Applet是一种特殊的Java程序。

作为解释型语言,Java的字节码程序需要一个专门的解释器来执行它。

对于JavaApplication来说,这个解释器是独立的软件。

而对于JavaApplet来说,这个解释器就是Internet网的浏览器软件,或者更确切地,就是兼容JavaApplet的Internet浏览器。

 

 

图一:

Applet程序的生命周期和主要方法

2.Java虚拟机 

Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机,它可以在任何处理器上(无论是在计算机中还是在其他电子设备中)安全兼容地执行保存在.class文件中的字节码。

Java虚拟机的“机器码”保存在.class文件中,有时也可以称之为字节码文件。

 

Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。

因此在运行时,Java源程序需要通过编译器编译成为.class文件。

 

Java虚拟机的建立需要针对不同的软硬件平台来实现,既要考虑处理器的型号,也要考虑操作系统的种类。

由此在SPARC结构、X86结构、MIPS和PPC等嵌入式处理芯片上,在UNIX、Linux、Windows和部分实时操作系统上都可实现Java虚拟机。

3.Java字节码的执行需要经过以下3个步骤:

 

(1)由类装载器(class loader)负责把类文件(.class文件)加载到Java虚拟机中。

在此过程需要检验该类文件是否符合类文件规范。

 

(2)字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如Applet程序中写本地计算机文件系统的操作。

 

(3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。

 

【实验环境】

J++6.0

二、实验内容:

【实验方案】

实现对学生相关信息的抽象,实现学生相关信息的输入和输出。

1.建立学生个体的类classstudent,其中包括姓名、学号、年龄。

并在student中用voidsetId()方法实现学生学号的输入;用voidsetName()方法实现学生学号的录入;用pubilcStringtoString()法方将当前的Integer对象封装的int值转化成对应的字符形式。

2.建立主类classAA,并调用pubilcvoidinit()法方是想输入出界面的处理。

用publicvoidactionPerformed(ActionEvente)法方实现相关信息的界面显示。

【实验过程】(实验步骤、记录、数据、分析)

1.在桌面建立工程文件夹,并命名;

2.启动J++6.0开发软件,点解菜单栏“File—>NewFile”,在弹出的窗口中选择J++工程,并对该工程进行命名,将当前工程保存在上一步建立的文件夹下,点击“打开”;

3.在打开的J++6.0编辑窗口点击保存

按钮,在弹出的窗口中对程序文件进行命名,并且该文件名必须与主类名相同,即AA.java,然后保存在第二部建立的工程文件夹下。

4.接下来就是该工程源程序的编辑:

源代码:

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassLLLextendsAppletimplementsActionListener

{

Labelpr1,pr2;

TextFieldt1,t2;

Buttonb;

Students;

Stringmsg;

publicvoidinit()

{

pr1=newLabel("姓名:

");

pr2=newLabel("学号:

");

t1=newTextField(10);

t2=newTextField(20);

b=newButton("确定");

b.addActionListener(this);

add(pr1);add(t1);

add(pr2);add(t2);

add(b);

s=newStudent();

msg=s.toString();

}

publicvoidactionPerformed(ActionEvente)

{

s.setId(Integer.parseInt(t2.getText()));

s.setName(String.valueOf(t1.getText()));

msg=s.toString();

repaint();

}

publicvoidpaint(Graphicsg)

{

g.drawString(msg,120,120);

}

}

classStudent

{

Stringname="某某";

intid=11111111;

intage=0;

voidsetId(intx)

{

id=x;

}

voidsetName(Stringy)

{

name=y;

}

publicStringtoString()

{

return"姓名:

"+name+"\n"+"学号:

"+id+"\n"+"年龄:

"+age;

}

}

5.以上程序的运行结果显然和现实情况有所不同,比如:

在学生学号栏出入:

-12345,程序也同样输出-12345;而当输入的学号过长,如:

123456789010111213时,程序也无任何反应;同样输入KKKK也没有任何反应。

6.基于上述存在的问题,显然是程序本身不够健壮,即对输入的合法性不能做出相应的判断以及给出相应的提示。

这将会给用户增加困扰。

为此我们在该基础上进行程序优化,解决上述出现的问题。

7.分析上述程序,易知,程序缺少对输入字符进行判断的语句块。

为此:

我们应用Java提供的异常处理进行程序优化,使之具备强壮性。

首先我们应该理解异常及异常抛出。

异常抛出:

指Java程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。

分析源代码:

publicvoidactionPerformed(ActionEvente)

{

s.setId(Integer.parseInt(t2.getText()));

s.setName(String.valueOf(t1.getText()));

msg=s.toString();

……

发现在学号转化输出语句:

“s.setId(Integer.parseInt(t2.getText()));”执行时,会出现字符串转换为数字异常(NumberFormatException)。

为此,利用异常处理对该异常进行处理,将程序改为:

publicvoidactionPerformed(ActionEvente)

{

try

{

s.setId(Integer.parseInt(t2.getText()));

s.setName(String.valueOf(t1.getText()));

msg=s.toString();

}

catch(NumberFormatExceptionee)

{

msg="亲,学号必须是整数哦!

";

}

这样程序将会对输入的字符进行相应的处理,带输入的字符长不是纯数字字符串时,将会抛出异常,将由catch捕获,并进行相应的处理。

对于输入如:

-12345或者过长12345678910111213…等等。

由于Java没有提供相应的异常类,我们需要自己定义相应的异常类来进行处理。

程序员定义异常类时,一般需完成如下工作:

1.声明一个新的异常类,使之以Exception类或其他某个已经存在的系统异常类或程序员定义的异常类为父类。

2.为新的异常类定义属性和方法,或重载父类的属性或方法,使这些属性和法方能够体现该类所对应的错误的信息。

为此,我们将重新定义一个异常类:

classAAextendsException

{

}

在定义了该异常类后,将程序中学号输入方法改为:

voidsetId(intx)throwsAA

{

if(10000000

{

id=x;

}

elsethrownewAA();

}

在以上工作完成后,程序将改为:

publicvoidactionPerformed(ActionEvente)

{

try

{

s.setId(Integer.parseInt(t2.getText()));

s.setName(String.valueOf(t1.getText()));

msg=s.toString();

}

catch(AArr)

{

msg="亲,学号必须是八位正整数哦!

";

}

通过应用J++6.0中异常类处理功能,上述程序将具备了一定的强壮性。

能对输入的字符长进行合法性的判断,并做出相应的判断和提示。

注:

J++6.0中,常见的异常类:

算术异常类:

ArithmeticExecption

空指针异常类:

NullPointerException

类型强制转换异常:

ClassCastException

数组负下标异常:

NegativeArrayException

数组下标越界异常:

ArrayIndexOutOfBoundsException

违背安全原则异常:

SecturityException

文件已结束异常:

EOFException

文件未找到异常:

FileNotFoundException

字符串转换为数字异常:

NumberFormatException

操作数据库异常:

SQLException

输入输出异常:

IOException

方法未找到异常:

NoSuchMethodException

 

【实验结论】(结果)

对程序进行数据测试:

1.登录界面:

2.数据测试(学号为空)

3.数据测试(学号长度不合法)

4.数据测试(学号为负)

5.数据测试(正确输入)

 

【实验小结】(收获体会)

通过该Java程序的设计,使我明白并且掌握了软件开发的基本过程。

同时也让我对该课程有了更为深入的了解,对于J++6.0的运行环境以及程序编辑、调试、测试的有关步骤有了更加深刻的体会。

最主要的是培养了我对该门课程的兴趣。

如:

对Applet的异常处理,让我明白了一个程序要做到十全十美是基本不可能的事情,我们只能做到更好,永远不能做到最好。

这要求我们对设计一个程序,应该站在用户的角度来审视这个程序的适用性和操作简单性。

 

三、指导教师评语及成绩:

评语

评语等级

及格

不及格

1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强

2.实验方案设计合理

3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)

4实验结论正确.

成绩:

指导教师签名:

批阅日期:

 

附录1:

源程序

源代码:

importjava.applet.*;

importjava.awt.*;

importjava.awt.event.*;

publicclassLLLextendsAppletimplementsActionListener

{

Labelpr1,pr2;

TextFieldt1,t2;

Buttonb;

Students;

Stringmsg;

publicvoidinit()

{

pr1=newLabel("姓名:

");

pr2=newLabel("学号:

");

t1=newTextField(10);

t2=newTextField(20);

b=newButton("确定");

b.addActionListener(this);

add(pr1);add(t1);

add(pr2);add(t2);

add(b);

s=newStudent();

msg=s.toString();

}

publicvoidactionPerformed(ActionEvente)

{

try

{

s.setId(Integer.parseInt(t2.getText()));

s.setName(String.valueOf(t1.getText()));

msg=s.toString();

}

catch(NumberFormatExceptionee)

{

msg="亲,学号必须是整数哦!

";

}

catch(AArr)

{

msg="亲,学号必须是八位正整数哦!

";

}

repaint();

}

publicvoidpaint(Graphicsg)

{

g.drawString(msg,120,120);

}

}

classStudent

{

Stringname="某某";

intid=11111111;

intage=0;

voidsetId(intx)throwsAA

{

if(10000000

{

id=x;

}

elsethrownewAA();

}

voidsetName(Stringy)

{

name=y;

}

publicStringtoString()

{

return"姓名:

"+name+"\n"+"学号:

"+id+"\n"+"年龄:

"+age;

}

}

classAAextendsException

{

}

 

附录2:

实验报告填写说明

1.实验项目名称:

要求与实验教学大纲一致.

2.实验目的:

目的要明确,要抓住重点,符合实验教学大纲要求.

3.实验原理:

简要说明本实验项目所涉及的理论知识.

4.实验环境:

实验用的软、硬件环境.

5.实验方案(思路、步骤和方法等):

这是实验报告极其重要的内容.概括整个实验过程.

对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作.对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明.对于创新性实验,还应注明其创新点、特色.

6.实验过程(实验中涉及的记录、数据、分析):

写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析.

7.实验结论(结果):

根据实验过程中得到的结果,做出结论.

8.实验小结:

本次实验心得体会、思考和建议.

9.指导教师评语及成绩:

指导教师依据学生的实际报告内容,给出本次实验报告的评价. 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2