版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1Java面向对象程序设计及应用实验指导书董东张朝昆2009.2
目录实验1Java开发环境 4实验目的 4实验任务 4命名规则 4实验题目 4实验步骤 5实验2Java基本数据类型及运算 11实验目的 11实验任务 11实验题目 11实验步骤 12实验3流程控制语句 14实验目的 14实验任务 14实验题目 14实验步骤 15实验4面向对象程序设计初步 18实验目的 18实验任务 18实验题目 18实验步骤 20实验5类与对象的设计 21实验目的 21实验任务 21实验题目 21实验步骤 23实验6类的继承 26实验目的 26实验任务 26实验题目 26实验步骤 28实验7抽象类和接口 29实验目的 29实验任务 30实验题目 30实验步骤 31实验8数组 33实验目的 33实验任务 33实验题目 33实验步骤 34实验9异常 35实验目的 35实验任务 35实验题目 35实验步骤 36实验10Collection框架 38实验目的 38实验任务 38实验题目 38实验步骤 41实验11输入输出流 42实验目的 42实验任务 42实验题目 42实验步骤 44实验12GUI设计 45实验目的 45实验任务 45实验题目 45实验步骤 47实验13线程安全的程序设计 48实验目的 48实验任务 48实验题目 48实验步骤 49实验14网络程序设计 49实验目的 49实验任务 49实验题目 50实验步骤 51附录1调试程序 56附录2文本文件I/O 57实验1Java开发环境实验目的1.熟悉Java程序运行环境;2.对NetBeansIDE中创建、编译及运行有初步的了解;3.编写简单的应用程序;4.学会对应用程序的编译、运行。实验任务1.熟悉NetBeansIDE环境,并在NetBeans中创建一个简单JavaApplication,并能够打印出字符串;2.创建简单的JavaApplication,能够打印出字符、字符串和数字等;3.考查读入一个字符,显示其结果的程序运行情况;4.考查读入一个字符串,显示其结果的程序运行情况;5.考查利用对话框方式读入数据,进行运算的程序运行情况。命名规则为了更好地完成Java实验,让大家在实验过程中,更加清楚实验步骤与流程,这里规定如下命名规则:1.每次实验为一个项目,项目名称为“Experiment<实验序号>”,如为实验1建立一个项目,项目名称为Experiment1;实验2为Experiment2;…;2.每次实验(即一个项目)仅有一个主类“Experiment<实验序号>.Main”,该类中只有一个main方法;3.实验中每一道实验题作为问题类的一个对象,类名为“Question<实验序号>_<题目号>”,如实验1的程序设计题第1题,命名为“Question1_1”4.类Question<实验序号>_<题目号>中设计方法run(),在该方法中实现题目;5.每次实验中的所有类都位于“Experiment<实验序号>”包中;6.在main方法中,每题类的实例如仅有一个,实例名字为:“questionInstance(<实验序号>_<题目号>”。运行该实验题的方法是,向该实例发送消息:qustionInstance<实验数>_<题目号>.run()。实验题目1.编写一个JavaApplication程序,该程序运行后输出效果如下:2.编写一个JavaApplication程序,该程序运行后输出效果如下:3.给出下面程序的运行效果:4.给出下面程序的运行效果:实验步骤1.实验题目1实验步骤(1)选择NetBeans主菜单的“File/NewProject…”选项,将弹出“NewProject”对话框,如图1-1所示。(2)在如图1-1所示的界面中,分别选中“Categories”列表框中“Java”选项和“Projects”列表框中“JavaApplication”选项,单击“Next”按钮,进入“NewJavaApplication”对话框,如图1-2所示。(3)在如图1-2所示的界面中,设置“ProjectName”文本框的值为Experiment1。图1-1NewProject窗口图1-2NewJavaApplication窗口(4)单击Browse浏览指定项目的名称和位置,从而打开图1-3所示的对话框。在此实验中,选择存储项目的文件夹,如E:\class\Java\JavaEx。如果磁盘上没有该文件夹,则单击“创建新的文件夹”按钮,新建E:\class\Java\JavaEx文件夹。选择完成后,单击“打开”按钮返回到“NewJavaApplication”对话框界面。图1-3SelectProjectLocation窗口(5)选中“SetasMainProject”和“CreateMainClass”复选框。并将“CreateMainClass”文本框的值设置为experiment1.Main,其中,Main就是本项目主类的名字,experiment1是包的名字。一个NetBeans项目中可以有若干类,多个类中可以有main()方法,但一个项目只能设置一个main()方法起作用,这个存在起作用的main()方法的类称为MainClass。(6)单击“Finish”按钮完成项目的创建,此时光标会自动出现在Main.java的代码编辑窗口中,如图1-4所示。图1-4代码编辑窗口—Main.java(7)右击项目窗口中的包experience1,弹出菜单中选择“New”、“JavaClass”,弹出对话框如图1-6所示。图1-6NewJavaClass窗口(8)在如图1-6所示界面中,设置“ClassName”文本框中的值为Question1_1,Package中选择experiment1。(9)单击“Finish”按钮完成类Question1_1的添加,返回到主界面。(10)在Question1_1.java文件中,给类Question1_1添加一个方法run(),并添加如下代码:添加完成后如图1-7所示。(11)打开Main.java文件,把光标移动到处换行,添加如下代码:添加完成后如图1-8所示。(12)选择主菜单中的“File/SaveAll”选项,保存所有文件。(13)选择主菜单中的“Build/BuildMainProject”选项,编译和打包应用程序。此时“Output”窗口在界面下方打开,显示Ant脚本运行的结果,如图1-9所示。(14)选择主菜单中的“Run/RunMainProject”选项,运行主项目。此时,在“Output”窗口中会显示运行结果,如图1-10所示。图1-7Question1_1.java文件图1-8Main.java文件图1-9编译输出窗口图1-10运行输出窗口(15)如果代码中有错误,NetBeans会自动给出提示(红色波浪线)。把鼠标指针移动到波浪线上,就会出现提示信息,并根据提示信息修改代码。如图1-11所示,提示“需要';'”,则需要在出错代码最后加上“;”。图1-11出错信息(16)如果代码格式很乱,不符合约定的格式,可选择主菜单中的“Source/Format”选项,NetBeans会自动格式化代码。格式化前界面如图1-12所示。图1-12格式化前界面格式化后如图1-13所示。图1-13格式化后界面从格式化后的结果看到,除了自动对齐语句外,还能够自动安排每行语句的位置,使得它们按照约定各占一行。2.实验题目2实验步骤(1)在项目Experiment1中新建类Question1_2。右击包experiment1,在弹出的菜单中,选择“New/JavaClass…”,弹出“NewJavaClass”对话框,设置ClassName文本框的值为Question1_2,其他值默认。设置完成后如图1-14所示。图1-14NewJavaClass窗口(2)单击“Finish”按钮,完成类Question1_2的添加,返回主界面。(3)在Question1_2.java文件中,给类Question1_2添加一个方法run(),并添加如下代码:(4)在Main.java文件的main方法中,首先通过注释的方法不再运行Question1_1,然后添加如下代码:(5)按F6运行程序。运行会在输出窗口出现错误提示,图1-15所示。init:init:deps-jar:Compiling2sourcefilestoC:\DocumentsandSettings\Administrator\MyDocuments\NetBeansProjects\Experiment1\build\classescompile:run:Exceptioninthread"main"java.util.IllegalFormatConversionException:d!=java.lang.Doubleatjava.util.Formatter$FormatSpecifier.failConversion(Formatter.java:3978)atjava.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2705)atjava.util.Formatter$FormatSpecifier.print(Formatter.java:2658)atjava.util.Formatter.format(Formatter.java:2430)atjava.io.PrintStream.format(PrintStream.java:899)atjava.io.PrintStream.printf(PrintStream.java:800)atjavaoop.experiment1.Question1_2.run(Question1_2.java:17)atjavaoop.experiment1.Main.main(Main.java:22)a=10b=JavaResult:1成功生成(总时间:0秒)图1-15Question1_2运行出错图单击阴影标识出的行,Netbeans会自动在源代码编辑窗口中定位错误行(17行)。把“%d”改为“%f”后再次运行。3.实验题目3实验步骤(1)在项目Experiment1中新建类Question1_3,生成文件Question1_3.java。(2)在文件Question1_3.java中编辑如题所示代码。(3)在文件Main.java中,注释前个题目的运行语句,添加如下代码:(4)按F6运行程序。假设输入数字字符'2'时的运行结果如图1-16所示。图1-16Question1_3运行结果图那么,请大家根据运行结果分析一下,程序的功能是什么?4.实验题目4实验步骤(1)在项目Experiment1中新建类Question1_4,生成文件Question1_4.java。(2)在文件Question1_4.java中编辑如题所示代码。(3)在文件Main.java中,注释前个题目的运行语句,添加如下代码:(4)按F6运行程序。假设输入字符串"KevinZhang"时的运行结果如图1-17所示。图1-17Question1_4运行结果图同样,请大家根据运行结果分析一下,程序的功能是什么?实验2Java基本数据类型及运算实验目的1.理解Java语言的基本数据类型的概念和数据类型之间的转换;2.掌握常量、变量和各种表达式的用法;3.掌握各种运算符的优先级;4.学会编写简单的Java程序。实验任务1.体会自动类型转换和强制类型转换用法;2.给出算术表达式、关系表达式及布尔表达式的值,体会运算符的优先级;3.利用三目运算符进行编程;4.进行简单Java编程,能够根据给出的三个变量值进行求和及平均;5.进行简单Java编程,能够根据圆的半径计算出圆的周长及面积。实验题目1.给出下面程序运行结果,注意掌握自动类型转换和强制类型转换的用法。根据运行结果,请问:(1)哪些变量用到了自动类型转换,哪些用到了强制类型转换?(2)强制类型转换可能会产生什么样的问题?(3)变量dd的结果和你预期的结果有什么样的偏差,为什么?2.给出下面程序的运行结果。根据运行结果,请问:(1)上面程序用到哪些运算符,其优先级如何?(2)“++”运算符放到变量之后和之前有什么区别?(3)“a+++b”、“a+++b”和“a+++b”一样吗,为什么?3.用条件运算符编写Java程序,取两数之中较大的数及较小的数,已知两个数为10和5。4.已知某学生三科考试成绩分别为87、92和75分,试求此学生考试成绩总和及平均分,要求平均分保留2位小数。5.计算半径为10的圆面积和周长。注意,π的值使用Java中的Math.PI。实验步骤1.实验题目1实验步骤(1)在项目Experiment2中新建类Question2_1,生成文件Question2_1.java。(2)在文件Question2_1.java中编辑如题所示代码。(3)在文件Main.java中,添加如下代码:(4)按F6运行程序。运行结果如图2-1所示。图2-1Question2_1运行结果图(5)根据计算得到变量dd应该为3.41359,而NetBeans给出的结果是3.413590014781952,后面多出一些小数部分,原因请学生们自己分析。2.实验题目2实验步骤(1)在项目Experiment2中新建类Question2_2,生成文件Question2_2.java。(2)在文件Question2_2.java中编辑如题所示代码。(3)在文件Main.java中,添加如下代码:(4)按F6运行程序。运行结果如图2-2所示。图2-2Question2_2运行结果图3.实验题目3、4和5实验步骤略。实验3流程控制语句实验目的1.熟练掌握选择结构控制的程序设计方法;2.熟练掌握循环结构控制的程序设计方法。实验任务1.理解if语句、if…else语句在程序设计中的运用;2.学会switch语句,if嵌套语句在多重选择程序设计中的运用;3.理解while语句、do…while语句和for语句实现循环的方法;4.学会运用while语句、do…while语句和for语句实现循环;5.学会多重循环和循环嵌套语句的使用。实验题目1.编程实现学生成绩所在等级,其中,成绩大于等于90分为优秀,大于等于80分为小于90分为良,大于等于60分小于80分为及格,小于60分为不及格。假设学生成绩为85分。2.给出下面程序的运行结果及实现的功能。3.给出下面程序的运行结果和实现的功能。4.编写Java程序,求1000以内(包括1000)能被3整除或被5整除的所有整数之和。5.编写Java程序,给出九九乘法表。实验步骤1.实验题目1实验步骤(1)在项目Experiment3中新建类Question3_1,生成文件Question3_1.java。(2)在文件Question3_1.java中编辑对应代码,其中,成绩可任意赋值,也可通过读入的方法获得。(3)在文件Main.java中,添加如下代码:(4)按F6运行程序。当成绩为85分的时候,运行结果如图3-1所示。图3-1Question3_1运行结果图2.实验题目2实验步骤(1)在项目Experiment3中新建类Question3_2,生成文件Question3_2.java。(2)在文件Question3_2.java中编辑如题所示代码。(3)在文件Main.java中编辑如题所示代码。(4)选择NetBeans主菜单中的“Build/SetMainProjectConfiguration/Customize…”选项,打开“ProjectProperties”对话框,如图3-2所示。也可以通过选择NetBeans主菜单中的“File/"Experiment3"Properties”选项("Experiment3"为工程名,根据实际情况将会有所变化),同样可以打开“ProjectProperties”对话框。图3-2ProjectProperties窗口(5)在“ProjectProperties”对话框中,在Categories列表框中选择“run”选项。(6)在“Arguments”文本框中填写当前日期,如“20094”(中间用空格分开)。其他默认。完成后单击“OK”按钮,返回主界面。(7)在主界面下,按F6运行程序。运行结果如图3-4所示。图3-4Question3_2运行结果图(8)完成功能请同学们自行分析。3.实验题目3实验步骤(1)在项目Experiment3中新建类Question3_3,生成文件Question3_3.java。(2)在文件Question3_3.java中编辑对应代码。(3)在文件Main.java中,添加如下代码:(4)按F6运行程序。运行结果如图3-5所示。图3-5Question3_3运行结果图(5)完成功能请学生们自行分析。4.实验题目4实验步骤步骤略,结果如图3-6所示。5.实验题目5实验步骤步骤略,结果如图3-7所示。图3-6Question3_4运行结果图图3-7Question3_5运行结果图实验4面向对象程序设计初步实验目的1.掌握根类Object的使用方法;2.掌握类描述类Class的使用方法;3.掌握系统类System的使用方法;4.掌握算术运算类Math的使用方法;5.掌握String类和StringBuffer类的使用方法;6.掌握日期类Date和日历类Calendar的使用方法。实验任务1.学会利用String类分析和编写程序;2.理解StringBuffer类的用法;3.学会分析Date类和Calendar类程序;4.体会System类的使用方法;5.学会利用Math类进行编程。实验题目1.分析运行下面程序并给出程序结果,体会String类的用法。2.分析运行下面程序并给出程序结果,回答下面问题。问题:(1)第二条语句含义是什么?(2)程序功能是什么?给出程序运行结果。(3)体会Date类和Calendar类的用法。3.分析运行下面程序并给出程序结果,体会System类的使用方法。4.编程程序,产生10个3位随机整数,并分两行打印输出到屏幕。实验步骤1.实验题目1实验步骤略。2.实验题目2实验步骤略。3.实验题目3实验步骤4.实验题目4实验步骤步骤略。运行结果如图10-3所示。时间不同,运行结果也不尽相同。图10-3Question10_5运行结果图实验5类与对象的设计实验目的1.掌握类的声明和定义;2.理解有静态成员和非静态成员变量的区别;3.理解基本参数和引用参数的区别;4.掌握类构造函数的方法;5.实现类的方法;6.掌握创建类实例的方法;7.学会定义和使用具有重载方法的继承类;8.掌握方法的重新定义。实验任务1.理解类的构造、方法及实例化的使用;2.学会对类的创建,构造函数的使用,类属性及方法的创建,以及类的实例化及使用;3.会对类的创建,类的属性及方法的创建进行独立编程;4.学会对较复杂的类进行分析;实验题目1.分析类的用法,并运行下面程序,给出程序运行结果。2.设计一个Dog类,属性有名称、颜色、重量和年龄,定义两个构造方法,定义toString()。声明两个方法:狗叫和狗咬。然后实例化两个Dog,分别让它们叫和咬。3创建学生类Student来完成下面问题。(1)创建类Student,包括属性学号no、姓名name和年龄age,且都是private类型;(2)声明一个构造方法,以初始化对象的所有的域;(3)声明获得各属性(学号、姓名和年龄)的各个方法;(4)声明设置各属性(学号、姓名和年龄)的各个方法;(5)声明一个public型的toString方法,将该类所有域信息组合成一个字符串;(6)声明统计创建Student对象的个数的成员变量count和得到Student对象的个数的方法。在主类中使用Student类创建两个Student对象,输出对象所有域信息;修改其姓名和年龄,并显示。4.在文件Question5_5.java中,分析并运行下面代码,给出输出结果。实验步骤1.实验题目1实验步骤略。2.实验题目2实验步骤(1)在项目Experiment5中新建类Question5_2,生成文件Question5_2.java。(2)在文件Question5_2.java中已经存在一个类Question5_2,在类Question5_2外面新建一个类Dog,并添加属性的示例代码如下:(3)在类Dog中添加无参数构造函数Dog()函数,使用默认值初始化。(4)在类Dog中添加构造函数,其中构造具体代码省略:(5)在类Dog中添加toString()函数,函数体代码如下:(5)完成类Dog后,再在类Question5_2中添加方法run(),编辑代码如下,同学们可以根据实际情况进行调整:(3)在文件Main.java中,添加如下代码:(4)按F6运行程序。图5-1Question5_2运行结果图3.实验题目3实验步骤(1)在项目Experiment5中新建类Question5_3,生成文件Question5_3.java。(2)在文件Question5_3.java中已经存在一个类Question5_3,在类Question5_3外面新建一个类Student,并添加属性的示例代码如下:(3)继续在类Student添加构造函数如下所示:(4)再在类Student添加得到和设置属性函数如下所示,这里只给出得到总数和姓名的方法如下所示:(5)再给出方法toString代码如下:(6)完成类Student后,在类Question5_3中添加方法run(),编辑示例代码如下:(7)在文件Main.java中,添加如下代码:(8)按F6运行程序,运行结果如图5-3所示。图5-3Question5_3运行结果图4.实验题目4实验步骤略。实验6类的继承实验目的1.理解类继承的概念;2.掌握从现有类中继承类;3.掌握声明和使用继承类对象的方法;实验任务1.编写继承类;2.编写超类、继承类的属性和方法;实验题目1.根据下面程序分析类继承的实现过程,给出程序运行之后的结果。Question6_1.java代码如下:2.根据下面给出的客户程序,设计类Shape,Rectangle和Circle。3.下面是3个类的构造方法,要利用继承改写代码,上机验证你的代码。4.编写Java程序,要求利用方法重载,求任意2个数或3个数的最大数,其中,这2个数或3个数要么全是整数,要么全是浮点数。提示:(1)方法重载在2个数中使用2次,3个数中使用2次;(2)求3个数的时候也可以使用2个数的方法。5.运行教材中的例子。实验步骤1.实验题目1实验步骤略。2.实验题目2实验步骤(1)在项目Experiment7中新建类Question6_2,生成文件Question6_2.java。(2)在文件Question6_2.java中添加一个抽象类Shape,编辑代码如下:(3)然后设计类Circle实现抽象类Shape,部分代码如下:(4)同样设计类Rect,代码略。(5)在类Question6_2的方法run()中给出示例代码:(7)在文件Main.java中,添加如下代码:(8)按F6运行程序,程序示例运行结果如图6-2所示。图6-1Question6_2运行结果图3.实验题目3实验步骤略。4.实验题目4实验步骤步骤略,实例运行结果如图6-2所示。图6-2实例运行结果图5.实验题目5实验步骤实验7抽象类和接口实验目的1.掌握抽象类和抽象方法的定义和使用;2.理解最终类、最终变量和最终方法的使用方法;3.掌握接口的定义和使用;4.掌握包的使用。实验任务1.实现抽象类的变量和抽象方法,对抽象类进行编程;学会最终变量的使用;2.学会分析接口;理解包的使用;3.学会分析接口,并能够对接口进行定义和实现;理解包的使用;4.学会对接口进行多重继承,并实现对接口的定义。实验题目1.验证教材中的例子,体会抽象类和接口的区别。2.假设在银行定期存款分半年期和一年期两种。如果是半年定期存款,利息率为1.75%;如果是一年定期存款,利息率为2.25%。无论哪种存款,在得到利息后还要交利息所得税5%。根据不同的存款金额,分别计算存款半年和一年相应的利息。要求:(1)设计一个存款抽象类Cash,成员变量包括存款金额amount、利息率interest和利息所得税tax(为最终类),成员方法只有抽象方法calculate(),用来计算利息;(2)定义两个类HalfCash和FullCash,分别用来完成计算和显示定期存款半年和一年相应的利息;(3)给出程序,当存款金额为1000元时,运行出其结果。3.分析下面程序的输出结果,指出第一条语句的用途,并理解接口的用途及实现过程。4.编写程序,要求如下:(1)定义Biology(生物)、Animal(动物)和Mankind(人)3个接口;(2)接口Biology声明breath()抽象方法;(3)接口Animal继承Biolog并声明move()和eat()抽象方法;(4)接口Mankind继承Animal并声明study()和think()抽象方法;(5)定义类NormalMan实现接口Mankind,仅显示相应的功能信息来实现它们声明的抽象方法;(6)在类NormalMan中定义私有变量name,实现无参构造方法和有参构造方法初始化该变量。实验步骤1.实验题目2实验步骤步骤略。2.实验题目2实验步骤步骤略。程序运行结果如图7-2所示。图7-1Question7_1示例运行结果图图7-2Question7_2运行结果图3.实验题目3实验步骤略。4.实验题目5实验步骤其他步骤略,这里只给出文件Question7_5.java中类Question7_5的方法run()实例:同学们可以根据实际情况进行调整。在此实例中,程序运行结果如图7-3所示。图7-3Question7_5实例运行结果图实验8数组实验目的1.掌握数组的声明和使用的方法;2.学会使用数组进行循环程序设计的方法;3.理解数组排序、查找及其他算法;实验任务1.对一维数组进行编写程序;2.对二维数组进行编写程序;3.使用Arrays静态方法处理数组;实验题目1.对于一个长度为20的一维整数数组,编程实现顺序查找值为60的元素在数组中的位置,如果没有找到,则提示“未找到60!”。2.编写程序,实现一个3×4数组的转置并输出。3.运行下面程序并给出程序结果,并说明程序的功能。实验步骤1.实验题目1实验步骤(1)在项目Experiment4中新建类Question8_1,生成文件Question8_1.java。(2)在文件Question8_1.java中编辑对应代码,其中,数组可以任意赋初值,假设赋值后数据为数组位置的5倍,代码如下:(3)在文件Main.java中,添加如下代码:(4)按F6运行程序,运行结果如图4-1所示。图4-1Question8_1运行结果图2.实验题目2实验步骤步骤略。结果实例如图4-2所示。3.实验题目3实验步骤步骤略。结果实例如图4-3所示。图4-2Question8_2实例运行结果图图4-3Question8_3运行结果图实验9异常实验目的1.掌握Java异常类的概念,理解运行时异常的具体方式;2.掌握异常声明、抛出方法、捕获异常和处理异常;3.掌握异常类方法的种类;4.掌握自定义异常的使用方法。实验任务1.分析一般的运行时异常;2.编写简单的带有异常相关程序,学会对异常进行捕获和处理;3.编写较为复杂的异常相关程序,能够在程序中灵活使用异常操作;4.自定义异常;5.理解自定义异常程序的方法。实验题目1.分析并运行下面程序,并回答下面问题。问题:(1)程序运行结果怎样,出现了哪些异常?(2)分析异常是怎样抛出、捕获和处理的?(3)程序中设计循环目的是什么?2.编写程序,功能为当输入一个整数字符串后,再将该整数字符串转换为整型,要求对可能出现的异常进行和处理。提示:(1)输入整数字符串,可能会产生IOException异常;(2)将字符串转换成整数的时候,可能会产生NumberFormatException异常。3.编写程序计算n的阶乘并捕捉可能出现的异常。要求:(1)阶乘方法命名为factorial();(2)无论是否出现异常,最后都要能够显示:“Finishcomputingfactorialnumber.”。提示:(1)输入字符串时,可能会产生IOException异常;(2)输入的字符串如果不能转换成int类型,将产生NumberFormatException异常;(3)当输入的字符串转换成int类型之后为负数时,在计算阶乘时,将产生IllegalArgumentException异常;(4)其他可能错误,同样使用IllegalArgumentExceptioin异常;4.编写自定义异常程序,输入一个字符,若为小写字母直接输出;若是大写字母则转换为小写字母输出;若不为字母,则抛出异常InvalidCharException。实验步骤1.实验题目1实验步骤略。2.实验题目2实验步骤步骤略。当输入一个具体字符串,如123a123时,程序运行结果如图9-1所示。图9-1Question8_2实例运行结果图3.实验题目3实验步骤步骤略。当输入为“3”时,运行结果如图8-2所示;当输入为“three”时,抛出异常,运行结果如图8-3所示。图9-2Question9_3示例运行结果图a图9-3Question9_3示例运行结果图b4.实验题目4实验步骤步骤略。当输入为“-5”时,出现异常,其运行结果如图9-4所示。图9-4Question9_4实例运行结果图5.实验题目5实验步骤步骤略。当输入为“3”时,出现异常,其运行结果如图9-5所示:图9-5Question9_5实例运行结果图实验10Collection框架实验目的1.理解Collection接口和AbstractCollection抽象类的用途;2.理解Set接口和AbstractSet抽象类的用途;3.掌握HashSet类的使用方法;4.理解List接口和AbstractList抽象类的用途;5.掌握ArrayList类的使用方法;6.掌握Vector类的使用方法;7.掌握LinkedList类的使用方法;8.理解通用迭代器接口Iterator的用途;9.理解列表迭代器接口ListIterator的用途;10.理解Map接口的用途;11.掌握AbstractMap抽象类及其子类HashMap的使用方法;12.掌握Dictionary抽象类及其子类Hashtable的使用方法。实验任务1.实践HashSet类的使用方法;2.实践ArrayList类的使用方法;3.实践针对Vector类进行简单应用;4.实践利用Iterator对集合进行遍历;5.实践分析有关HashMap类的程序。实验题目1.运行并分析程序运行结果,回答下面问题。问题:(1)第2条语句的含义是什么?(2)程序的运行结果是什么?(3)为什么编译的时候有警告错误?2.运行程序,回答下面问题。问题:(1)根据程序补全倒数第3行注释所提示的程序;(2)给出运行结果;(3)如何向List对象中添加、删除、更新元素?如何查找元素?3.运行并分析程序运行结果。问题:(1)程序出现的编译错误是什么?什么原因?(2)add()方法和addElement()方法有何不同?(3)对于get()方法返回的元素是否需要强制类型转换?4.运行程序,回答下面问题。问题:(1)程序的运行结果是什么?(2)remove方法删除掉的对象是“first”吗,如果不是,那为什么?(3)多次运行程序,得到结果都一样吗?为什么?5.已知类Student:问题:实例化3个Student对象,并放在一个Collection对象中,然后对这些学生对象排序。实例化3个Studeng对象,并放在一个Collection对象中,要求名字不能重复,并能够通过学生姓名从Collection对象获取学生对象引用。实验步骤1.实验题目1实验步骤略。2.实验题目2实验步骤步骤略。运行结果如图10-1所示。图10-1Question10_2运行结果图3.实验题目3实验步骤略。4.实验题目4实验步骤步骤略。运行结果示意图如图10-2所示。由于机器的不同,运行结果也不尽相同。图10-2Question10_4运行结果图5.实验题目5实验步骤步骤略。实验11输入输出流实验目的1.掌握Java在不同层次上输入/输出的方法;2.理解字节流和字符流的联系与区别;3.掌握文件的输入/输出机制。实验任务1.分析字节流的使用方法;2.利用字符流进行编写程序;3.使用字符缓冲流进行文件的读/写操作;4.使用对象流方式进行编程;5.对随机文件进行分析与编程。实验题目1.设计程序,首先D:\java文件夹下新建文本文件experiment.txt,列出D:\java文件夹下的所有文件的名字。把experiment.txt改名为test.txt,再次列出D:\java文件夹下的所有文件的名字。2.从标准输入中读入整数12、双精度浮点数3.1415926、字符串niceaday,并将其存入二进制文件。最后程序从二进制文件中读出,并在屏幕上显示出来。3.从互联网上下载一个.gif文件,另存为D:\java\from.gif。使用二进制文件输入/输出流的应用程序,分析并运行下面程序,并回答下面问题。问题:(1)程序的功能是什么?(2)程序运行结果怎样?4.从互联网上下载一段文本,存入D:\java\file.txt,统计文件file.txt包含的单词个数和行的个数。提示:(1)使用字符缓冲流BufferedReader类;(2)单词与单词之间是用空格分隔的;(3)其他可能错误,同样使用IllegalArgumentExceptioin异常;5.根据实验步骤,完成编程:利用对象流方式将对象数据到文件中。提示:(1)为了能够将对象数据写入文件中,对象所属的类需要实现Serializable接口。6.使用随机文件类RandomAccessFile的应用程序,分析并运行下面程序。实验步骤1.实验题目1实验步骤步骤略。2.实验题目2实验步骤步骤略。3.实验题目3实验步骤步骤略。当存放一个如图9-1所示的图片时,运行结果如图11-2所示。图11-1from.gif图片图11-2Question9_1运行结果图4.实验题目4实验步骤步骤略。运行的示例结果如图11-3所示。图11-3Question11_3实例运行结果图5.实验题目5实验步骤(1)在项目Experiment11中新建类Question11_4,生成文件Question11_4.java。(2)在文件Question11_4.java中,实现Serializable接口代码如下:(3)在类Question11_4的方法run()中给出示例代码:(4)在文件Main.java中,添加如下代码:(5)按F6运行程序。6.实验题目6实验步骤略。实验12GUI设计实验目的1.理解Swing包常用容器,包括框架JFram、对话框JDialog、面板JPanel等的使用方法;2.理解Swing包常用控件,包括标签JLabel、按钮JButton、单选按钮JRadioButton、复选框JCheckBox、文本控件、菜单控件等的使用方法;3.理解Swing包高级控件,包括组合框JCombolBox、列表JList、表格JTable等的使用方法;4.掌握Swing事件处理方法。实验任务1.分析基本Swing控件,并进行简单编程;2.利用Swing控件进行编程;3.利用Swing高级控件进行编程;4.综合运用Swing控件。实验题目1.分析和运行程序,针对下面问题进行改进。问题:(1)给出运行界面;(2)修改程序,将窗口标题设置为“ComputeFrame”;(3)修改程序以便能求两个浮点数之和;(4)增加“Minus”按钮,以求两个浮点数之差。2.IntroductiontoGUI(1)Followtheinstructionsin1-gui-functionality.pdf;3.DesigningaSwingGUIinNetBeansIDE.(1)Followtheinstructionsin2-quickStart-gui.pdf;实验步骤1.实验题目1实验步骤步骤略。当添加上“Minus”按钮时,运行界面如图12-1所示。图12-1Question12_1运行界面实验13线程安全的程序设计实验目的1.理解线程的基本概念;2.掌握Thread类和Runnable接口的使用方法;3.掌握线程池的使用方法;4.掌握父线程获取子线程返回值的方法;5.掌握信号量的使用方法;6.掌握生产者消费者模型的实现。实验任务1.利用Thread子类方法实现多线程;用Runnable接口方式实现多线程2.线程池管理多线程编程;3.获取子线程返回值;4.分析线程间同步方法。实验题目1.运行并分析程序运行结果,回答下面问题。问题:(1)第2条语句的含义是什么?(2)程序运行结果及功能是什么?(3)在程序中,是否能够去掉try…catch语句,为什么?2.ConcurrencyUtilities。(1)FollowtheinstructionsinConcurrencyUtilities.doc;实验步骤1.实验题目1实验步骤略。2.实验题目2实验步骤实验14网络程序设计实验目的1.记住网络操作的包的名称;2.掌握IP地址封装类InetAddress的用法及应用;3.掌握URL类的使用方法及应用;4.学会Socket编程;5.学会UDP编程。实验任务1.使用类InetAddress的使用方法;2.使用类URL的使用方法;3.利用UDP方式进行数据的发送和接收等操作实现。实验题目1.设计一个程序获取本机IP,判断该IP的类别,并区别是IPv4还是IPv6。2.编写程序,要求利用URL,读取URL文件并显示出来。3.根据下面实验步骤,应用UDP通信方式,实现数据的发送与接收。4.应用Socket通信方式,编写C/S程序,要求客户端发送圆的半径,服务器端接收后,计算出圆的面积,并将结果返回给客户端。服务器端代码如下:客户端代码如下:5.运行下面程序,分析此端口扫描程序,并给出程序运行结果。实验步骤1.实验题目1实验步骤(1)在项目Experiment15中新建类Question15_1,生成文件Question15_1.java。(2)在文件Question15_1.java中添加包声明和引用包语句:(3)在类Question15_1中添加方法run(),并编写代码:(4)在文件Main.java中,添加如下代码:(5)按F6运行程序,程序运行结果示意图如图15-1所示。图15-1Question15_1运行结果图示意图结果会因网络环境的不同而不同。2.实验题目2实验步骤(1)在项目Experiment15中新建类Question15_2,生成文件Question15_2.java。(2)在文件Question15_2.java中添加包声明和引用包语句:(3)在类Question15_2中添加方法run(),并编写代码:(4)在文件Main.java中,添加如下代码:(5)按F6运行程序,程序运行部分结果如图15-2所示。图15-2Question15_2运行部分结果图结果会因服务器端网页内容不同而不同。3.实验题目3实验步骤(1)在项目Experiment15中新建类Question15_3,生成文件Question15_3.java。(2)在文件Question15_3.java中添加包声明和引用包语句:(3)添加UDPServer类,声明其私有变量:(4)并添加UDPServer类构造函数UDPServer():(5)添加UDPClient类,声明其私有变量:(6)并添加UDPClient类构造函数UDPClient():(7)在类Question15_2中添加方法run(),并编写代码:(8)在文件Main.java中,添加如下代码:(9)按F6运行程序,在Output-Experiment15(run)中,首先选择1启动“服务器”,如图15-3所示。图15-3服务器端等待接收字符串(10)再按F6运行程序,在Output-Experiment15(run)#2中,选择2启动“客户端”。之后输入要发送的内容,如“Hello”,回车,如图15-4所示。此时,“服务器”端应该显示出效果,如图15-5所示。图15-4客户端发送字符串图15-5服务器接收字符串后效果图4.实验题目4实验步骤步骤略。服务器端显示结果如图15-6所示,客户端显示结果如图15-7所示。图15-6服务器端接收半径图15-7客户端发送半径5.实验题目5实验步骤步骤略。运行结果示意图如图15-8所示。图15-8Question15_5运行结果示意附录1调试程序调试(Debug)是定位和修复程序运行时刻错误的过程。下面通过Problem1134的Java代码调试,说明在Netbeans中调试代码的一般方法。程序在编辑、编译和运行过程中会产生三类错误:编译时刻错误、运行时刻错误和逻辑错误。编译时刻的错误通常因为语法原因引起,例如缺少语句结束的“;”、左括号“(”和右括号“)”不配对等。运行时刻错误由程序在运行时刻动态产生,例如被零除、引用不存在的对象等。而逻辑错误由算法引起,比如对n个整数排序的程序通过了编译,也正常运行结束,但排序的结果不正确。这就属于逻辑错误。假设我们在编辑源代码的时候不小心把第23行for(i=2;i<101;i++){ ...写成了for(i=2;i<=101;i++){ ... 运行程序,出现了运行时刻的问题:run:Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:101atProblem1134.ACM.HDU.Main.main(Main.java:25)JavaResult:1
Exception(异常)是程序运行过程中出现的事件,该事件打断了正常的程序流程。异常也是不寻常事件发生后程序中创建的对象,在异常对象中存储了关于事件的信息。本例中提示信息的含义是在Problem1134.ACM.HDU.Main类的main方法中第25行抛出了异常对象java.lang.ArrayIndexOutOfBoundsException,这是个数组下标越界异常。下面我们通过调试来发现出现此异常的原因。首先把光标定位在第23行,按下F4键或者从Run菜单中选择RuntoCursor菜单项,让程序运行到光标位置,即尚未进入二重循环的位置停下来,我们想看一看在这个位置上程序的状态。由于二重循环的目的是向connections数组中填入合适的整数,我们首先看当前connections数组的状态。在Netbeans右下角自动弹出的Debuging窗口中选择LocalVarialbe标签页,会看到这里列出了main()方法中声明的所有变量的名字、类型及其当前取值。单击connections左侧的+展开该变量,如下图所示:会看到connections[0]至conncetions[100]中存放了相同的对象引用#073;并没有connections[101]这样的存储单元。所以第24行最后一次循环出现中出现的connections[101]就是一个非法引用。因此会抛出数组越界异常。除了在Debuging窗口的LocalVariables标签页中查看变量的当前取值外,还可以在编辑窗口中查看。例如查看当前变量i的取值,就可以把鼠标指针移动到第23行i的上方停留下来,就会出现i=(int)0的提示信息。错误发现后,首先按下Shift+F5或者选择Run菜单中的FinishDebuggerSession停止调试。回到编辑器中把第23行中的<=改为<。重新运行,程序正常结束。进入到调试会话有以下三种途径:DebugMainProject(F5).首先设置断点,然后从Run菜单中选择RunMainProject,那么程序会在第一个断点位置停下来。StepInto(F7).在执行主类main()方法的第一条可执行语句前停下来。RuntoCursor(F4).首先把光标移动到想让程序停下来的位置,然后从Run菜单选择RuntoCursor,程序会运行到光标所在位置停下来。设置断点是常用的调试手段。单击编辑窗口左侧第21行行号位置,就在第21行设置了一个断点。再次单击,则取消该断点。在调试会话期间,通常使用StepInto(F7)或者StepOver(F8)使程序逐步运行。二者区别在于,如果即将运行语句是对自定义成员方法的调用,则F7进入该成员方法体;而F8不进入成员方法体,直接返回方法调用的结果。通常通过Shift+F5或者选择Run菜单中的FinishDebuggerSession停止调试会话。附录2文本文件I/O本节通过一个例子说明文本文件输入输出的方法。考虑效率,输入输出的数据个数很少时,可采用Scanner对象和PrintWriter对象printf()方法完成文本文件的输入输出。例。向磁盘文件D:\java\test.txt中写入字符串TestScanner10012.3onetruetwofalse,然后从中读取各个数据,在标准输出上产生如下输出String:Scannerint:100double:12.3String:oneboolean:trueString:twoboolean:false源代码如下packageProblem1134.ACM.HDU;importjava.util.*;importjava.io.*;/***@author董东*/publicclassScanTextFile{publicstaticvoidmain(Stringargs[])throwsIOException{inti;doubled;booleanb;Stringstr;PrintWriterfout=newPrintWriter("D:\\java\\test.txt");fout.printf("%s","TestScanner10012.3onetruetwofalse");fout.close();Scannersrc=newScanner(newFile("D:\\java\\Test.txt"));while(src.hasNext()){if(src.hasNextInt()){i=src.nextInt();System.out.println("int:"+i);}elseif(src.hasNextDouble()){d=src.nextDouble();System.out.println("double:"+d);}elseif(src.hasNextBoolean()){b=src.nextBoolean();System.out.println("boolean:"+b);}else{str=src.next();System.out.println("String:"+str);}}}}但是,当所要读取的数据规模较大时,上面的代码会影响整个程序的用时。对I/O进行缓冲是一种常见的性能优化方法。BufferedInputStream类对InputStream流进行带缓冲以达到性能改善的目的。数据输入时,首先被放入缓冲区,随后的读操作就是对缓冲区中的内容进行访问。该类有两个构造方法:publicBuffere
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年会议策划师会议组织策划资格考试试题及答案
- 2026年药物临床试验机构质量管理体系建设规范
- 2026年危废转移联单规范填报测试试卷及答案
- 2026年药品到货拒收药品隔离管理培训试题(含答案)
- 2026年卫生正高职称面审答辩(中医内科)经典试题及答案
- 2026年食品原料采购验收试卷(含答案)
- 2026年医院防汛应急培训三基年度培训方案
- 2026年健康管理社区健康评估课件
- 紧密型县域医共体康复护理服务能力项目可行性研究报告模板-立项拿地
- 2026 四川事业编社会工作岗 模拟预测试卷 含答案解析
- 钢板仓工程专项施工方案
- DB32∕T 2914-2025 危险场所电气防爆安全检查规范
- DB34∕T 4523-2023 食品生产安全智慧监管平台建设指南
- 2025深圳市茅洲河流域洪涝风险图集
- 2024年青岛崂山旅游集团招聘考试真题
- NBT 11127-2023 在用钢丝绳芯输送带报废检测技术规范
- 浙江党费管理办法
- 中医老年人体质辨识课件
- 电网企业文化试题及答案
- 行业标准课题答辩
- 水利工程施工监理规范(SL288-2014)用表填表说明及示例
评论
0/150
提交评论