收藏 分销(赏)

Java语言程序设计试验参考指导书试验参考指导书.doc

上传人:快乐****生活 文档编号:2582313 上传时间:2024-06-01 格式:DOC 页数:68 大小:166.54KB 下载积分:14 金币
下载 相关 举报
Java语言程序设计试验参考指导书试验参考指导书.doc_第1页
第1页 / 共68页
Java语言程序设计试验参考指导书试验参考指导书.doc_第2页
第2页 / 共68页


点击查看更多>>
资源描述
《Java语言程序设计试验指导书》试验指导书 高川翔 2月   一、试验地位、作用 Java语言程序设计试验作为课程实践性步骤之一,是教学过程中必不可少关键内容。经过计算机试验和案例分析,使学生加深了解、验证巩固课堂教学内容;增强高级语言程序设计感性认识;掌握程序设计基础方法;培养学生理论和实践相结合能力。   二、试验开设对象 本试验开设对象为《Java语言程序设计》课程学习者(信息和计算科学专业本科生),试验为必修内容。   三、基础原理及课程介绍 Java语言程序设计是必修基础课程。本课程以BlueJ为工具,关键介绍面向对象程序设计方法,Java面向对象程序设计语言和面向对象程序设计工具。使学生掌握面向对象思想方法,是后续专业课程基础。   四、指导老师 标准上由Java语言程序设计讲授老师负责,由年轻老师担任关键试验指导老师,试验室人员配合指导。指导老师应在每次试验前讲清试验目标、基础原理、试验要求等,指导学生在要求时间内完成相关课程试验。   五、试验设备配置 每人配置1台电脑,安装有JDK,和Blue J、Eclipse或JBuilder。   六、考评和汇报  1.试验后,学生将试验结果等内容写出试验汇报,符合试验教学要求,并得到指导老师认可。  2.指导老师对每份试验汇报进行审阅、评分。  3.该试验程依附于理论课,试验课成绩记入课程平时成绩,占总成绩25% 试验一 Java运行环境安装、配置和运行 一、试验课时 3课时。 二、试验目标 1. 掌握下载并安装 JDK 软件包方法。 2. 掌握在BlueJ环境下编写、编译和运行 Java 程序方法。 3. 了解 Java 语言概貌。 4. 了解设置环境变量,命令行编译java程序方法。 三、试验内容和要求 内容: 1.安装 JDK 软件包和BlueJ开发环境并进行配置。 (1) 配置JDK运行环境: a) 配置windowspath环境变量。将安装J2SDK(注意:必需安装J2SDK)bin文件夹完整路径添加到path系统变量中,图3-4所表示。 图1-1 path系统变量配置 b) 配置CLASSPATH系统变量。假如系统变量中不存在classpath,则“新建”之。将J2SDKlib文件夹完整路径写入。图3-5。 图1-2 CLASSPATH系统变量配置 (2) 进入DOS虚拟环境; (3) 将试验1程序保留在d:\example文件夹下; (4) 使用javac命令编译程序;(图3-6) (5) 使用java运行程序。注意包中程序编译和运行方法。 图1-3 利用JDK环境编译运行Java应用程序 (以下试验前请仔细阅读BlueJ教程电子文档) 2.在BlueJ环境下新建一个工程,在工程中编写一个简单 Java 程序,在屏幕上输出”hello,java!”。 public class Hello { public static void main(String args[]) { System.out.println("hello,java!"); } } 3.编译运行 Java 程序。 4.设置环境变量,在命令行下编译运行Java程序。 5.浏览运行JDK 自带 Applet 应用小程序。 6.在程序中设置断点、单步实施、查看变量值。 要求: 1、独立完成;并以实际上机操作计成绩; 2、全部上机试验必需在下一次试验之前完成,不然此次试验成绩算0分; 3、编写试验汇报(根据汇报模板编写,必需写出具体试验步骤及必需屏幕截图)。试验二 创建一个Applet 一、试验课时 3课时。 二、试验目标 了解Applet和Application区分,学会设计Applet程序。 三、试验内容和要求 已知JButton类有一个结构函数原形为: public JButton(String text,Icon icon)。 其中参数text为显示在按钮上文本、参数icon为显示在按钮上图标。下面例子就是利用此结构函数产生一个带有文本、图标按钮,而且当按一下按钮,图标就切换一次。此图标切换是在两个图标中循环进行。程序以下: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ButtonExample extends JApplet{ int imageNum=1; public void init( ){ Container con = getContentPane( ); final JButton jb_ok=new JButton(″按我″,new ImageIcon(″sun1.gif″)); con.setLayout(new FlowLayout()); con.add(jb_ok); jb_ok.addActionListener(new ActionListener( ){ public void actionPerformed(ActionEvent e){ if(imageNum = =1){ jb_ok.setIcon(new ImageIcon(″sun2.gif″)); imageNum=2; } else{ jb_ok.setIcon(new ImageIcon(″sun1.gif″)); imageNum=1; } } }); } } 此程序中还用到了JButton类setIcon( )方法,用以设置按钮新图标。 Html文件代码: (文件名为Appcounter.htm) <applet code=ButtonExample.class width=300 height=200> </applet> 将该文件和ButtonExample.class保留在同一个目录中,使用appletviewer appconmter.htm命令就能够运行这个applet。 要求: 1、独立完成;并以实际上机操作计成绩; 2、全部上机试验必需在下一次试验之前完成,不然此次试验成绩算0分; 3、编写试验汇报(根据汇报模板编写,必需写出具体试验步骤及必需屏幕截图)。试验三 数据类型及表示式 一、试验课时 3课时。 二、试验目标 1.掌握Java语言基础数据类型,了解数据类型包装类概念。 2.掌握变量和表示式使用方法。 3.了解类型转换概念。 三、试验内容和要求 1. 输入并运行下面程序,体会多种基础数据类型变量申明、初始化及使用。 public class BasicTypes{ public static void main(String args[]) { byte b = 0x88; short s = 0200; int i = 111111; long l = 0x; char c ='A'; float f =.33f; double d =.00001001; boolean bl= true; System.out.println(″byte b =″+b); System.out.println(″short s =″+s); System.out.println(″int i =″+i); System.out.println(″long 1 =″+1); System.out.println(″char c =″+c); System.out.println(″float f =″+f); System.out.println(″double d =″+d); System.out.println(″boolean bl =″+bl); } } 思索: (1)上述程序中定义了哪些变量?每个变量变量名、数据类型和作用域分别是什么? (2)查看程序运行结果,分析为何有些变量最终输出结果和初始化时不一样? 2. 输入并运行下面程序并分析结果,体会多种表示式使用方法。 (1)public class ArithmaticOp{ public static void main(String args[ ]){ int a =5, b=3,c; double d=2.5; c=a/b+a%b; System.out.println(″c=″+c); d=c*b+a/b*d; System.out.println(″d=″+d); } } (2) public class ArithmaticOp2{ public static void main(String args[ ]) { int a,b,c; a=b=c=5; a=++b-++c; System.out.println(″a=″+a+″b=″+b+″c=″+c); a=b+++c++; System.out.println(″a=″+a+″b=″+b+″c=″+c); a=b――+c――; System.out.println(″a=″+a+″b=″+b+″c=″+c; } } (3) public class LogicOp{ public static void main(String args[ ]){ boolean x, y; x=5>3‖3*4<6&&!(5<3); y=2= =6&&9>8+4||5+6<7+4&&!x; Systeme.out.println(″x=″+x+″,y=″+y); } } 思索: (1)上述程序中用到了哪些运算符?运算符优先级怎样? (2)增一和减一运算符(++和--)放在变量和放在变量以后,其使用方法有何不一样? (3)将你分析程序得到结果和实际运行结果相比较,假如有不一样,原因在哪里? 3. 输入并运行下面程序,分析结果,了解并掌握自动类型转换使用方法。 public class Promotion{ public static void main(String args[ ]){ byte b=10; char c=′a′; int i =90; long l=5551; float f =3.5f; double d = 1.234; float f1=f*b; //float*byte―>float int i1 = c+i; //char+int―>int long l1 = 1+i1; //long+int―>long double d1 =f1/i1-d; //float/int―>float,float―double―>double System.out.println(″f1=″+f1); System.out.println(″il=″+il); System.out.println(″l1=″+l1); System.out.println(″d1=″+d1); } } 思索: (1)上面程序用到了哪些自动类型转换?分别是怎样实现? (2)何时需要用到强制类型转换?强制类型转换可能会造成什么不良后果?   提升: 1.在Java中,数据类型包装类(type wrapper class)用于封装基础数据类型相关信息和操作。即使我们常常直接使用Java基础数据类型,但因为它本身不含有任何操作,无法扩充本身功效,所以,为确保Java语言纯面向对象特征,Java语言基础包为数据类型提供了部分对象封装。 数据类型包装类是由多个类组成一个集合,每种数据类型均存在对应对象封装类。 下表列出了Java数据类型包装及其对应基础数据类型。 基础数据类型 数据类型包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 每一个类全部提供了部分属性和方法,用户能够依据需要来灵活使用。 注意:数据类型包装类和对应基础数据类型名字几乎相同,请不要混淆。前者显著特点是第一个字母应为大写。 2.输入并运行下面程序,了解并掌握数据类型包装类属性和使用方法。 public class MaxVariables{ public static void main(String args[ ]){ //integers byte largestByte =Byte.MAX_VALUE; //MAX_VALUE是Byte类属性(表示Byte类所能达成最大值) short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; //real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; //other primitive types char aChar=′S′; boolean aBoolean =true; //display them all System.out.println(″The largest byte value is″+largestByte); System.out.println(″The largest short value is″+largestShort); System.out.println(″The largest integer value is″+largestInteger); System.out.println(″The largest long value is″+largestLong); System.out.println(″The largest float value is″+largestFloat); System.out.println(″The largest double value is″+largestDouble); //Character类有一个方法boolean isUpperCase(char ch)是用来判定一个字符是 //否是大写 if(Character.isUpperCase(aChar)){ System.out.println(″The character″+aChar+″is upper case. ″); }else{ System.out.println(″The character″+aChar+″is lower case. ″); } System.out.println(″The value of aBoolean is″+aBoolean); } } (1)修改上面程序,让它能输出每种整型数据类型能表示最小值。(提醒:Byte类型最小值属性是MIN_VALUE) (2)Character类有另一个方法boolean isLowerCase(char ch),能够来判定一个字符是否为小写。修改合适语句,使程序完成相同功效。 (3)修改上面程序,使布尔型变量aBoolean含有一个不一样值。 要求: 1、独立完成;并以实际上机操作计成绩; 2、全部上机试验必需在下一次试验之前完成,不然此次试验成绩算0分; 3、编写试验汇报(根据汇报模板编写,必需写出具体试验步骤及必需屏幕截图)。 试验四 控制步骤 一、试验课时 3课时。 二、试验目标 1.充足掌握步骤控制语句格式和功效。 2.熟练利用步骤控制语句进行程序设计。 3.学会进行简单程序调试。 三、试验内容和要求 1.输入并运行下面两个程序: (1)public class WhileDemo2{ public static void main (String[ ]args){ int i =100; while(i<100{ System.out.println(″Print″+i); i++; } } } (2) public class DoWhileDemo2{ public static void main (String[ ]args){ int i =100; do{ System.out.println(″Print″+i); i++ } while(i<100); } } 思索: 运行上面两个程序,比较While和DoWhile语句实施过程有何不一样。 2.输入并运行下面程序: public class lxsum{ public static void main (String[ ]args){ int i =1,sum; sum=0; while(i<=100){ sum+=i; i++ } System.out.println(″sum=″+sum); } } 思索: (1)循环通常适适用于什么情况? (2)请用for循环和do-while循环为实现上面程序功效。 3.输入并运行下面程序,体会switch语句使用。 public class lxswitch{ public static void main (String [ ]args){ int x=1,y=2,i=0,j=0; switch(x){ case 1: switch(y){ case 1: i+ +; break; case 2:j++; break; default: i+ +; j++; } case2: i+ +;j++;break; default: i++;j++; } System.out.println(″i=″+i); Sysem.out.printin(″j=″+j); } } 思索: (1)将你分析程序得到结果和实际运行结果相比较,看看有没有什么不一样。假如有不一样,原因在哪里? (2)break语句在switch语句中起到了什么作用? 4. 输入并运行下面程序,判定某十二个月是否是闰年。闰年条件是符合下面二者之一: (1)能被4整除,但不能被100整除; (2)能被4整除,又能被400整除。 public class JudgeLeapYear{ public staic void main (String args[ ]){ //方法1 int year=1800; if((year%4= =0 && year%100!=0)||(year%400= = 0)) System.out.println(year+″年是闰年″); else System.out.println(year+″年不是闰年″); //方法2 year = 1997; boolean leap; if(year%4!=0) leap=false; else if (year%100!=0) leap = true; else if(year%400!=0) leap = false; else leap = true; if (leap = = true) System.out.println(year+″年是闰年″); else System.out.println(year+″年不是闰年″) //方法3 year=; if (year%4= = 0){ if (year%100= =0){ if (year%400= =0) leap=true; else leap=false; }else leap = false; }else leap = false; if (leap = = true) System.out.println(year+″年是闰年″); else System.out.prinln(year+″年不是闰年″); } } 思索: (1)程序中是怎样判定一个数能被另一个数整除? (2)请说出程序中用了哪三种方法来判定是否闰年,并体会其中联络和区分。 提升: 在输入程序过程中难免要犯错。通常说业,程序中错误有两种:语法错误和逻辑错误。程序调试就是要找出程序中错误,编出正确程序。 下面程序用来输出5次"Hello!",请更正程序中错误,并上机调试运行。 public class Hello { public static void main(String[ ]args){ for(i=1;i<5;i++); { System.out.println(″time″+i+″:Hello! ″); } } } 在MS-DOS下编译该程序,输入javac Hello. java,屏幕上会出现以下错误信息: Hello.java:5:Undefined variable:i for (i=1;i<5;i++); ? Hello.java:5:Undefined variable:i for(i=1;i<5;i++); Hello.java:5:Undefined varable:i for (i=1;i<5;i++) ? Hello.java:7:Undefined variable:i System.out.println(″time″+i+″:Hello″); 4errors 能够看到,Java中错误信息包含以下内容: (1)源程序文件名; (2)犯错那一行行号; (3)犯错类型; (4)犯错那一行内容。 依据系统给犯错误信息,能够进行对应修改。如上面多个错误,类型全部是"Undefined variable:i",也就是说,变量i还未定义。于是就能够分析出犯错原因是程序中没有申明变量i就直接使用了它,就是一个语法错误,在源程序中进行对应修改。修改过程序内容以下: public class Hello{ public static void main (String[ ]args) { int i; //新添变量说明 for (i=1;i<5;i + +){ System .out. println(″time″+i+″:Hello! ″) } } } 对上面程序再进行编译,顺利经过(屏幕没有出现任何信息)后生成对应.class文件。运行该文件,结果为: time 5:Hello! 只输出了一次"Hello!"和题目标要求(输出5次"Hello!")不符,这是一个逻辑错误。分析结果,发觉它只实施了i为5那一次输出。再次检验程序,发觉在for语句圆括号后面多了一个分号,造成了for语句循环体实际为空语句。从源程序中将";"去掉,重新存盘、编译、运行。结果以下: time1:Hello! time2:Hello! time3:Hello! time4:Hello! 发觉还少输出一次"Hello!",将循环变量结束条件为"i<6",重新存盘、编译,运行正确。 思索: (1)变量i在程序中起到什么作用? (2)假如将i初值改设为0,那么应怎样改写终止循环条件? (3)假如将i初值改设为3,那么应怎样改写终止循环条件? 要求: 1、独立完成;并以实际上机操作计成绩; 2、全部上机试验必需在下一次试验之前完成,不然此次试验成绩算0分; 3、编写试验汇报(根据汇报模板编写,必需写出具体试验步骤及必需屏幕截图)。 试验五 数组 一、试验课时 3课时。 二、试验目标 1.掌握Java中数组申明、创建、初始化和使用。 2.了解Java中提供对数组排序常见方法。 3.了解在数组中查找一个特定值常见方法。 三、试验内容和要求 1.数组元素排序是一个常常会碰到问题,冒泡(起泡)排序法(bubble sort)是一个常见排序方法。它基础思想是:对一个含有n个元素数组,首先将第一个元素值和第二个元素值进行比较,若为逆序(即第一个元素值大于第二个元素值),则将两个元素交换之,然后比较第二个元素和第三个元素值,依次类推,直到第n-1个元素和第n个元素进行比较、交换为止。如此经过一趟排序,使得值最大元素被安置到最终一个元素位置上。然后,对前n-1个元素进行一样操作,则含有次大值元素被安置在第n-1个元素位置上。反复以上过程直到没有元素需要交换为止。此过程可图示以下: 初始数组元素: [49 38 65 97 76 13 27] 第1趟排序以后:[38 49 65 76 13 27] 97 第2趟排序以后:[38 49 65 13 27] 76 97 第3趟排序以后:[38 49 13 27] 65 76 97 第4趟排序以后:[38 13 27] 49 65 76 97 第5趟排序以后:[13 27] 38 49 65 76 97 第6趟排序以后:13 27 38 49 65 76 97 在此过程中,值小数组元素好比水中气泡逐趟向上飘浮,而值大数组元素好比石块沉入水底。下面代码是冒泡排序法程序实现,请输入并运行之: public class BubbleSort{ public static void main (String args[ ]){ int i,j; int intArray[ ] ={30,1,-9,70,25}; int 1=intArray .length; for(i=1;i<1;i++) for(j=0;j<1-i-1;j+ +) if(intArray[j]>intArray[j+1]){ int t =intArray[i]; intArray[j]=intArray[j+1]; intArray[j+1]=t; } for(i=0;i<1;i++) System.out.println(intArray[i]+″″); } } 思索: (1)什么情况下使用数组比较合理? (2)为何要用双重循环来实现此算法?循环变量i和j是怎样来确定范围? (3)怎样来交换两个数组元素值? 2.试着修改上面程序,改为对一维数组中元素按值从大到小进行排序,并输出最终止果。 3.我们常常需要在数组中查找一个特定值。对于已排好序数组来说,二分查找法(折半查找法)是一个比较快捷方法。二分查找法基础思绪是:先将整个数组作为查找区间,用给定值和查找区间中间元素值相比较,若相等,则查找成功;若不等,则缩小范围,判定该值落在区间前一部分还是后一部分,再将其所在部分作为新查找区间。继续上述过程,一直到找到该值或区间大小小于0表明查找不成功时为止。请输入并运行下面程序,体会二分查找法算法实现方法。 public class arrayBinary{ public static int bsearch(int array[ ],int value){ boolean found = false; int high =array.length-1; int low =0; int cnt =0; int mid =(high+low)/2; System.out.println(″Looking for″+value); while (!found &&(high> =low)){ System.out.println(″Low″+low+″Mid″+mid+″High″+high); if(value= =array[mid]) found=true; else if(value<array[mid]) high =mid-1; else low =mid+1; mid= (high+low)/2; cnt + +; } System.out.println(″Steps″+cnt); retrun ((found)?mid:-1); } public static void main(String args[ ]){ int a[ ]=new int [100]; for (int i=0;i<a.length;i++) a[ i]=i; System.out.println(″Result″+bsearch(a,32)); System.out.println(″Result″+bsearch(a,1)); System.out.println(″Result″+bsearch(a,1031)); } } 思索: (1)程序中整型变量high、low、mid、cnt分别起什么作用?布尔型变量found又起到什么作用? (2)该程序是怎样确定查找区间范围? (3)该程序先定义了一个bsearch方法,然后在main()中数次调用该方法,请说出这么做有什么优点。 4.编程实现在无序数组中次序查找一个特定值,找到则返回该值在数组中位置(下标),找不到则返回-1。(想想,为何用负值用为返回标志?) 提醒:数组中元素是无序,所以搜索范围一定要是整个数组。 5.输入并运行下面程序,体会二维数组使用方法。 class MaxMatrix{ public static void main(String args[ ]){ int row =0; int col=0; //放行号和列号 int max; int m[ ] [ ] ={{6,2,3,24},{-5,8,7,6},{-3,18,-4,1}}; max =m[0] [0]; for (int i=0;i<=2;i++){ if(m[ i] [j ]>max){ max =m[i] [j]; row =i ; col = j; } } System.out.println(″最大元素值为:″+max); System.out.println(″该元素位置在:″+row+″行,″+col+″列″); } } 6.修改上面程序,改为求矩阵中最小那个元素值,和其所在行号和列号。 提升: 1.在Java中对数组进行排序,能够使用以下步骤: (1)使用import java.util.*语句,能够让java.util包中全部类在程序中全部能够使用; (2)创建一个数组; (3)使用Arrays类sort( )方法来重新调整一个数组数据。 用Arrays类sort( )方法排过序数组元素将被调整为按升序排列。 import java.util.*; //让java.util包中全部类在程序中全部能够使用 class SortName{ public static void main(String args[ ]){ String names[ ]= {″Akbar″,″Umberto″,″Peter″,″Zemo″,″Digo″}; System.out.println(″数组元素原来次序是:″); for (int i =0;i<names.length;i++) System.out.println(i+″; ″+names[i]); Arrays.sort(names); //使用Arrays类sor()方法为数组names排序 System.out.println(″数组元素现在次序是:″); for (int i =0;i<names.length;i++) System.out.println(i+″: ″+names[i]); } } 2.建立一个字符串数组并按升序进行排序。 3.建立一个浮点型数组并按升序进行排序。 要求: 1、独立完成;并以实际上机操作计成绩; 2、全部上机试验必需在下一次试验之前完成,不然此次试验成绩算0分; 3、编写试验汇报(根据汇报模板编写,必需写出具体试验步骤及必需屏幕截图)。 试验六 类 一、试验课时 3课时。 二、试验目标 1.掌握怎样定义类。 2.掌握怎样定义类组员变量、组员方法。 3.掌握怎样创建对象。 4.掌握关键字static使用方法。 5.掌握类组员访问权限。 三、试验内容和要求 1.下面是一个老师类Teacher,用于学校某个系部管理。系部在管理老师时,所关心信息关键有老师编号、姓名、性别、年纪、家庭住址、电话号码等,于是抽取这些属性来描述"老师"这个实体。考虑到老师年纪、家庭住址、电话号码等不宜对无关人员公开,于是将这些数据设为私有组员变量(即实施保护)。要取得这些数据,必需使用类所提供一组方法,并给出口令。检验口令是否正确是由私有方法checkPasswork完成。阅读并编译这一程序,体会类组员变量、类方法和访问权限设计。 class Teacher { //定义老师类 //申明组员变量 String tCode; //老师编号 String tName; //老师姓名 String tSex; //老师性别 private String tAge; //老师年纪 private String tAddr; //家庭住址 private String tTelenmb; //电话号码 private String tPassword;访问口令 //申明结构方法 Teacher(String password){ tPassword = password; } //申明组员方法 private int checkPassword(String password) { //私有方法:检验口令是否正确 if(tPassword= =password) return 1; else return 0; } void setAge(String passwork,String age) //置年纪
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服