




免费预览已结束,剩余41页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
燕山大学经济管理学院JAVA程序设计语言实验指导书经济管理学院电子商务系2010年8月实 验 说 明JAVA程序设计语言Java语言是一种完全面向对象的计算机程序设计语言,它具有“一次编写,到处运行”的跨平台特性。该课程作为电子商务专业的一门专业课,主要介绍JAVA程序设计语言的基本知识,为日后学生进一步学习J2ME或J2EE打下牢固的程序设计语言基础。实验课是JAVA程序设计语言的重要实践环节。通过实验,使学生加深理解、验证、巩固课堂教学内容,加深对JAVA程序设计的过程、方法的理解,发挥学生的想象力和创新能力。本实验课程共开设5个实验项目。实验方式与基本要求:学生须在实验前预习相应实验内容,熟悉实验的基本原理、方法及要求、制定好上机步骤,弄清实验目的;实验每次均为2学时,学生须按时到场;要求学生掌握程序设计的各种基本方法与步骤,并在实验中得到提高。 考核及报告:实验时立将各种问题与结果记录下来,实验内容可以通过截图等方式存入U盘,并在课后完成实验报告内容; 任课教师对每次记录都要进行检查、分析、登记; 课程总成绩应为理论考核、实验成绩的综合;其中实验课程成绩占30%,理论课成绩占70。实验一 熟悉Java程序开发环境一、实验目的(1) 了解和使用J2sdk1.5.0(JDK)集成环境。(2) 熟悉J2sdk集成环境的基本命令、功能和基本用法。并学会配置path 等环境变量(3) 学习并熟练掌握使用J2SDK环境进Java程序开发的全过程(包括:源程序的编辑、编译、调试、运行和结果查看)。(4) 了解和掌握JCREATOR和Eclipse集成环境的安装,简单应用。(5) 了解Java Application和Applet程序的基本结构。(6) 了解Java程序文件名和类名的说明方法。二、实验内容与要求(1) 安装Jdk1.5.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。进入命令行(MS-DOS)方式,进行如下设置:SET PATH=D:JDK1.5.0BIN;%PATH% SET CLASSPATH=.; %CLASSPATH%(2) 安装 Jdk 1.5.0 Doc, 并查看Jdk 1.5.0 Doc 文档中,和课堂教学有关系的部分。在整个实验过程中都可以参考。(3) 建立自己的工作目录如d:user。以后的Java程序和过程文件均放置在此目录下。输入一个Application源程序,学习编辑、编译、运行程序的方法。/例1-1 文件HelloWorldApp.java如下:/ HelloWorldApp.javapublic class HelloWorldApp public static void main(String args)System.out.println(Hello World!);本程序的作用是输出下面一行信息:Hello World!现在我们可以运行该程序。首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。然后对它进行编译:d:userjavac HelloWorldApp.java编译的结果是生成字节码文件HelloWorldApp.class。最后用java解释器来运行该字节码文件:d:userjava HelloWorldApp结果在屏幕上显示HelloWorld!(4) 输入一个applet源程序,学习编辑、编译、运行程序的方法。 简单的Applet小程序例1-2 / HelloWorldApplet.javaimport java.awt.*;import java.applet.*;public class HelloWorldApplet extends Applet /anappletpublic void paint(Graphics g)g.drawString(Hello World in Applet!,20,20);这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译:d:userjavac HelloWorldApplet.java得到字节码文件HelloWorldApplet.class。由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。它的文件如下:An Applet其中用标记来启动HelloWorldApplet.code指明字节码所在的文件,width和height指明applet所占的大小,把这个HTML文件存入Example.html,然后运行:d:userappletviewer Example.html这时屏幕上弹出一个窗口,其中显示Hello World in Applet!。三、思考题1什么是Java虚拟机?它的作用是什么?Java语言写的代码会被特定程序编译(javac.exe)成字节码(bytecode),字节码不能直接在CPU上运行,需要另一个程序读取并执行,这个部件就是java虚拟机,它像机器一样运行编译好的java字节码,就像机器直接执行机器码一样。是一个想象中的机器2Java Application程序与Java Applet程序的不同之处有那些?请各位同学收集错误代码与提示信息,以及产生错误的原因。1、运行方式不同。Java Application是完整的程序,可以独立运行;Java Applet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。 2、运行工具不同。Java Application程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而Java Applet必须通过网络浏览器或者Applet观察器才能执行。3、程序结构不同。每个Java Application程序必定含有一个并且只有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行。含有main方法的那个类,常被称为主类,也就是说,Java Application程序都含有一个主类。而Applet程序则没有含 main方法的主类,这也正是Applet程序不能独立运行的原因。尽管Applet没有含main方法的主类,但Applet一定有一个从 java.applet.Applet派生的类,它是由Java系统提供的。 4、受到的限制不同Java Application程序可以设计成能进行各种操作的程序,包括读写文件的操作,但是 Java Applet 对站点的磁盘文件既不能进行读操作,也不能进行写 操作。Applet使Web页面增加了按钮等功能,从而增加了交互性。3列举出5种以上Java开发平台,分析他们的优缺点或特点。1、 jbuilder:大型的软件,写起来比较麻烦,做图形界面的软件。 2、JCreator Pro,编程用的,它自带java虚拟机和平台,安装后,只需要在电脑的环境变量里面添加一个path和一个class,后面跟上你安装这个软件的路径。 3、eclipse:这个比较干净,不带任何插件。 4、myeclipse:这个做web项目比较好,因为集成了很多的网页插件。5、netbeans: 是一个为软件开发者提供的自由、开源的集成开发环境。是一个开放框架,可扩展的开发平台,本身是一个开发平台,可以通过扩展插件来扩展功能。实验二 简单数据类型和流程控制一、实验目的1掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。2掌握Java语言中具各种运算符表达式的基本知识。3熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。4熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。5熟练掌握while、do-while和for三种语句组成循环结构的基本方法。熟练掌握特殊流程控制语句如break,continue,标号语句。6熟练掌握一维数组和二维数组的使用7把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题二、实验内容与要求1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果public class Ch21 public static void main(String args) char x,y,z; x=K; y=; z=117; System.out.print(x); System.out.print(y); System.out.print(z); 结果如下:KO2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果public class Ch22 public static void main(String args) boolean x,y,z; int a=12,b=24; x=(ab); y=(a!=b); z=(a+b=36); System.out.println(x=+x); System.out.println(y=+y); System.out.println(z=+z); 结果如下:x=false y=true z=true3、仔细读下面的JAVA语言源程序,自己给出程序的运行结果public class Ch23 public static void main(String args) int x,y,z=0; for (x=1;x=10;x+) for (y=1;y5) break; z+; System.out.println(z=+z); 结果如下:z=454 设int year,month,day分别表示一个日期中的年月日,试编程求a) 对于任意三个整数,判断其是否为一个合法的日期值。class Ch24 int year; int month; int day; Ch24(int a,int b,int c) year=a; month=b; day=c; boolean isRiqi() if(year=1&year=9999)if(year%4=0&year%100!=0)|year%400=0)if(month=2)if(day=1) return true; else return false;else if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)if(day=1&day=1&month=1&day=30) return true;else return false; else return false;else if(month=2)if(day=1) return true;else return false;else if(month=4|month=6|month=9|month=11)if(day=1&day=3&month=1&day=31) return true;else return false; else return false;else return false; public class MyCh242 public static void main(String args) Ch24 s=new Ch24( 2000 , 2, 29);if(s.isRiqi()System.out.println(是合法的日期值);elseSystem.out.println(不是合法的日期值); b) 给定一个日期值,计算若干天后的日期值class Ch25 int year; int month; int day; Ch25(int a,int b,int c) year=a; month=b; day=c; void geiding(int a,int b,int c) System.out.println(给定日期是:year=+year + + month=+month + +day=+day); void jisuan(int m) do if(year%4=0&year%100!=0)|year%400=0)if(month=2)if(m+day=29)day=m+day;break;else month+;m=day-29+m;day=0;elseif(month=2)if(m+day=28)day=m+day;break;else month+;m=day-28+m;day=0;if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)if(m+day=31)day=m+day;break;else if(month!=12) month+;else month=1;year+;m=day-31+m;day=0;if(month=4|month=6|month=9|month=11)if(m+day=30)day=m+day;break;else if(month!=12) month+;else month=1;year+;m=day-30+m;day=0;while(day=0);System.out.println(计算后日期是:year=+year + + month=+month + + day=+day); public class MyCh252 public static void main(String args) Ch25 s=new Ch25( 2000 , 2, 20);s.geiding(2000 , 2, 20);s.jisuan(25); c) 如果有两个日期值,计算他们相距的天数。class Dateint year;int month;int day;int t1=0;int t2=0;int i,j;Date(int x,int y,int z)year=x;month=y;day=z;int jisuan()for (i=1;iyear;i+)if(i%4=0&i%100!=0)|i%400=0)t1=t1+366;else t1=t1+365;for (j=1;jn)?(m-n):(n-m);System.out.println(两个日期相距天数:+tian);5、找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点。)class Andianpublic class MyAndian public static void main(String args) int a=1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,6,1,2,3,4, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10, 1,2,3,4,5,9,7,8,9,10;int i;intj;intmax;intmin;inth;intl=0;for(i=0;ia.length;i+)max=ai0;h=0;for(j=0;jmax)max=aij;h=j; min=a0h;for(j=0;jai.length;j+)if(ajhmin)min=ajj;l=j;if(l=i)System.out.println(暗点是:+alh); 6、编写一个程序,要求将一个浮点数强制转化成整型后再输出。class Qzzhfloat a;Qzzh(float x)a=x;int zh()return (int)a;public class MyQzzh public static void main(String args) Qzzh f = new Qzzh(1.4f); System.out.println(f.zh(); 7请计算出3至1000范围内最大的10个素数,放入数组中,并计算出其累加和。public class Testsz public static boolean isPrime(int data) for(int i = 2; i=3;i-) if(count=10) break; if(isPrime(i) sum = sum + i; count+;System.out.print(a+count+=+i+n); System.out.println(n十个素数之和 : + sum); 三、思考题1定义变量的作用是什么?变量分为全局变量和局部变量,主要用于调用其值,还有逻辑判断时使用,一些比较复杂的逻辑操作,变量必不可少。按作用域的不同,变量可以分为以下类型:1.成员变量 在类中声明,它的作用域是整个类! (这个是变量范围最大的)2.局部变量 在方法内部或者方法的一个代码块的内部声明如果在一个方法内部声明,它的作用域就是整个方法 如果在一个方法的某个代码块的内部声明,他的作用域就是这个代码块代码块:位于一个以内的代码!2Java运算符的优先级与结合性是怎样的?运算符优先级表优先级运算符结合性1() .从左到右2! +(正) -(负) + -从右向左3* / %从左向右4+(加) -(减)从左向右5 从左向右6 = instanceof从左向右7=!=从左向右8&(按位与)从左向右9从左向右10|从左向右11&从左向右12|从左向右13?:从右向左14= += -= *= /= %= &= |= = = =从右向左1、该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。2、结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。3long l=121233;float f=100.2323; 这两行代码在编译时有什么错误。第一个long l=121233 是可以的,也可以写成long l=121233Lfloat 类型的应该是 float f = 100.2323f;因为浮点类型默认是double的。4&和&有什么区别?&按位与/&逻辑与。&,双目运算符:将两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上。&:双目运算符,计算两个表达式同时成立的“真值”(同时成立真值为真否则为假)逻辑真值有两种,1为真,0为假,但在运算时用非零表示真,0表示假。5 break,continue在流程控制中的作用。break语句的作用 (1) 只能在循环体内和switch语句体内使用break语句。 (2) 当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。 (3) 在循环结构中,应用break语句使流程跳出本层循环体,从而提前结束本层循环continue语句作用(1)其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。 (2)执行continue语句并没有使整个循环终止。在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分 ,然后决定循环是否继续进行。 continue与break的区别:它的作用及用法和break类似。重要区别在于,当前循环遇到break,是直接结束循环,而若遇上continue,则是停步当前这一遍循环,然后直接尝试下一遍循环。实验三 类、对象基础知识一、实验目的1、熟练掌握类、对象的的概念以及对事物的抽象。2、熟练掌握成员、方法的概念以及构造方法的概念。3、熟练掌握封装性,多态性的概念4、理解面向对象的程序设计方法。二、实验内容与要求1运行下面的程序,理解面向对象的程序设计方法的基本概念。class value public int x,y; public value(int a,int b) x=a; y=b; public class Ch31 public static void main(String args) int total; value num=new value(24,65); total=num.x+num.y; System.out.println(add=+total); 2、定义一个类实现银行帐户的概念,包括的变量有帐号和存款余额,包括的方法有存款、取款、查询余额和”显示帐号”,。定义主类,创建帐户类的对象,并完成相应操作。提示:关键代码如下:class BankString zhanghao;double leftmoney;Bank(String zhangha,double leftmone)zhanghao=zhangha;leftmoney=leftmone; double getleftmoney()return leftmoney;void xianshihao()System.out.println(银行账号是:+zhanghao); void savemoney(double money)leftmoney+=money; void getmoney(double money)if(moneys3&s1+s3s2&s2+s3s1) return true; else return false;float zhouchang()return s1+s2+s3;float area()return (float)Math.sqrt(this.zhouchang()*0.5*(float)this.zhouchang()/2-(float)Math.sqrt(m*m+n*n)*(float)this.zhouchang()/2-(float)Math.sqrt(k*k+j*j)*(float)this.zhouchang()/2-(float)Math.sqrt(h*h+l*l);public class MyPointpublic static void main(String args)Point A=new Point(0,0);Point B=new Point(0,3);Point C=new Point(4,0);Trianglele p=new Trianglele();p.setTri( A, B, C);if(p.panduan()float t=p.zhouchang(); float a=p.area(); System.out.println(t); System.out.println(a);else System.out.println(不能构成三角形);3将上题的方法setTri改用构造方法实现初始化。class TrianglelePoint A;Point B;Point C;float m;float n;float k;float j;float h;float l;float s1;float s2;float s3; Trianglele(Point a,Point b,Point c) A= a; B= b; C= c;boolean panduan() m=A.x-B.x; n=A.y-B.y; k=B.x-C.x; j=B.y-C.y; h=A.x-C.x; l=A.y-C.y; s1=(float)Math.sqrt(m*m+n*n); s2=(float)Math.sqrt(k*k+j*j); s3=(float)Math.sqrt(h*h+l*l); if(s1+s2s3&s1+s3s2&s2+s3s1) return true; else return false;float zhouchang() m=A.x-B.x; n=A.y-B.y; k=B.x-C.x; j=B.y-C.y; h=A.x-C.x; l=A.y-C.y; s1=(float)Math.sqrt(m*m+n*n); s2=(float)Math.sqrt(k*k+j*j); s3=(float)Math.sqrt(h*h+l*l);return s1+s2+s3;float area()return (float)Math.sqrt(this.zhouchang()*0.5*(float)this.zhouchang()/2-(float)Math.sqrt(m*m+n*n)*(float)this.zhouchang()/2-(float)Math.sqrt(k*k+j*j)*(float)this.zhouchang()/2-(float)Math.sqrt(h*h+l*l);public class MyPoint2public static void main(String args)Point A=new Point(0,0);Point B=new Point(0,3);Point C=new Point(4,0);Trianglele p=new Trianglele( A, B, C);if(p.panduan()float t=p.zhouchang(); float a=p.area(); System.out.println(t); System.out.println(a);else System.out.println(不能构成三角形);4、编写JAVA程序求园柱体的表面积和体积,已知底面圆心p为(0,0),半径r为10,圆柱体高5。class yzt float r; float h; yzt(float a,float b) r=a; h=b; float bmj() return (2*3.14f*r*h+2*3.14f*r*r); float tj() return 3.14f*r*r*h; public class MyCh30 public static void main(String args) yzt s=new yzt(10f,5f); System.out.println(s.tj(); System.out.println(s.bmj();三、思考题1一个方法或一个块内定义的变量是否可以在方法外或块外使用?这种变量称为什么?方法的形式参数是否可以在方法之外使用?不可以在外面使用,这个是局部变量,要是想要在外面使用可以定义一个全局变量,方法的形式参数不可在外面使用。只能在自己的花括号内才能使用2为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调用?在java语言 中,构造函数又称构造方法。特殊性在于,与普通方法的区别是,他与类名相同,不返回结果也不加void返回值。构造函数的作用是初始化对象,即在创建对象时被系统调用(与普通方法不同,程序不能显示调用构造函数)。构造函数还能够被重载,即可以传入参数,当程序中包含有带参的构造函数时,系统将不会再提供的无参构造函数。3子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?子类声明并实现和父类中一样的方法,这两个方法不仅名字相同,参数列表也相同,这种情况叫方法覆盖。4同名的不同方法共存的情况称为什么?如何区分这些同名方法?同名的不同方法共存的情况称为方法重载。区分这些同名方法是方法的参数表,参数的类型或个数。5定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea ();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。class Rectanglefloat c;float k; interface Recfloat getArea();class Zheng extends Rectangle implements Recfloat b;Zheng(float x)b=x;public float getArea()return b*b;public class MyZhengpublic static void main(String args)Zheng z=new Zheng(2);System.out.println(z.getArea();实验四 异常处理一、实验目的1、理解什么是例外2、掌握java的例外处理机制和方法二、实验内容与要求 1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果 import java.io.*;public class Ch61 public static void main(String args)throws IOException int ko=new int15; int n,a; String x; BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in); System.out.print(Enter an integer:); x=keyin.readLine(); n=Integer.parseInt(x); try a=110/n; ko15=100; System.out.println(此描述无法执行!); catch(ArithmeticException e) System.out.println(除数为0的错误); catch(ArrayIndexOutOfBoundsException f) System.out.println(数组索引值大于数组长度的错误!); System.out.println(执行完catch的描述!); 结果如下:Enter an integer:0除数为0的错误执行完catch的描述!Enter an integ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 子曰古之学者为己课件
- 工业药剂学课件
- 年度汽车安全培训内容课件
- 年度安全管理培训计划课件
- 年度安全生产培训会课件
- 年度安全培训通讯课件
- 年底保安安全培训课件
- 年后安全知识培训总结课件
- 年初安全培训记录课件
- 年初培训课件开场白
- 安徽省2024年普通高中学业水平合格性考试政治试卷(含答案)
- 2025-2030中国低因咖啡豆行业营销策略及销售规模预测报告
- 情感计算伦理边界-洞察及研究
- 《交通基础设施防灾减灾导论》全套教学课件
- 器械UDI码管理制度
- 第2课《中国人首次进入自己的空间站》课件
- 网络工程师的网络取证与证据收集试题及答案
- T/CACM 1552-2023中医慢性非传染性疾病管理技术通则
- 《家具设计》课件
- 国有融资担保公司笔试真题解析
- 提高VTE护理措施落实率
评论
0/150
提交评论