版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Java语言程序设计》实验指导书编写:居锦武类类抽象实例化对象四川理工学院计算机科学系二〇〇七年九月目录TOC\o"1-2"\h\z附一、实验报告填写方法2附1.1实验开发环境:2附1.2实验过程要求:2附1.3实验报告内容填写:2实验一Java运行环境的安装、配置与运行3一的安装和设置3(一)下载3(二)安装3(三)配置环境变量7(四)测试安装8二JCreator概述8(一)JCreator编辑界面的组成9(二)JCreator中JDK的设定方法:11实验二:Java基础程序设计131.1实验目的:131.2实验预习:131.3实验内容及要求:19实验三(1):面向对象设计基础——复数类的实现202.1实验目的:202.2实验预习:202.3实验内容及要求:21实验三(2):面向对象高级程序设计——复数类的复杂运算233.1实验目的:233.2实验预习:233.3实验内容及要求:26实验四:身份证号码的分析274.1实验目的:274.2实验预习:274.3实验内容及要求:30实验五:简单计算器的实现315.1实验目的:315.2实验预习:315.3实验内容及要求:33附一、实验报告填写方法附1.1实验开发环境:硬件:IntelP42.4G/256M/40GPC机一套;软件:Windows2000+j2sdk1.4.2附1.2实验过程要求:在上课的同时,将每个实验预习的每个例题直接完成在实验指导书上;在实验之前,将实验要求的程序写在草稿本上;每次实验之前需要把实验指导书和写有程序的草稿纸带上,以备检查,否则不能进入实验室。实验过程中,不能做与实验无关的事情(如:打游戏、看其他书籍),否则本次实验成绩记0分,在遇到问题的时候举手提问,同学之间交流的声音不可太大。附1.3实验报告内容填写:第1页:填写(1)实验目的、(2)实验要求第2页~第3页:填写(3)实验程序源代码第4页:填写(4)实验运行结果、(5)实验总结实验一Java运行环境的安装、配置与运行一JDK的安装和设置(一)下载JDKJDK开发工具包可以免费下载。下载网址——下载如下文件:j2sdk-1_3_1_02-win.exe。(二)安装JDK由于目前大多数用户使用的是Window98操作系统,所以我们以在Window98操作系统上安装JDK为例,说明安装JDK1.3.1的过程。j2sdk-1_3_1_02-win.exe是一个字解压文件,双击它就可以解压缩,同时进行安装工作。j2sdk-1_3_1_02-win.exe中包含了JavaRuntimeEnvironment。所以只要安装了j2sdk-1_3_1_02-win.exe,浏览器就自然可以运行JavaApplet。 安装工作实际上分为两个步骤。安装程序首先会收集一些信息,用于安装的选择,然后才开始拷贝文件,设置Windows注册表等具体的安装工作。双击j2sdk-1_3_1_02-win.exe,文件会自动解压缩,如图所示。图解压缩工作完成之后,会出现JDK图点击“next”按钮,会出现JDK如图点击“Yes”按钮,接受许可协议,安装程序会出现让用户选择安装目标路径的对话框。如图图在这个对话框中,系统让用户选择JDK程序的安装路径,系统默认的路径是C:\jdk_02,点击“next”按钮,JDK的所有程序就会被安装到C:\jdk1.3.1_02目录下。用户也可以在本对话框中点击“Browse”按钮,修改JDK程序的目标安装路径。下一个对话框让用户选择所使用的浏览器,如图所示图Windows用户常用的浏览器是IE,所以选择“MicrosoftInternetExplorer”复选框。点击“Next”按钮,进入下一个对话框,如图所示。图这个对话框让用户选择要安装的JDK组件,我们选择全部的组件,点击“Next”按钮,就会开始正式的安装工作。JDK图Java2RuntimeEnvironment安装完成之后,结束安装,出现如下对话框,如图图在这里,点击“Finish”按钮,结束安装。(三)配置环境变量平台为Window98时,需要修改系统根目录下的autoexec.bat文件。使用记事本或任何文本编辑器打开文件autuexec.bat,在该文件的最后增加如下两行SETPATH=%PATH%;c:\jdk_02\binSETCLASSPATH=.;c:\jdk_02\lib其中,环境变量path和classpath分别指定了JDK命令搜索路径和Java类路径。在这里我们假设JDK安装在C:\jdk_02目录下,JDK的所有命令都放在c:\jdk1.3.1_02\bin目录下。设置环境变量path的作用是使DOS操作系统可以找到JDK命令。设置环境变量classpath的作用是告诉Java类装载器到哪里去寻找第三方提供的类和用户定义的类。JVM和其它JDK工具通过依次搜索平台库、库扩展和类路径来查找类。 如果用户在安装jdk时,选择了另外的JDK安装路径,则环境变量path和classpath要作相应的调整。(四)测试安装环境变量设置完成后,重新启动计算机,在DOS窗口下,敲入javac并回车后,如果出现Javac的用法参数提示信息,则安装正确。否则要检查环境变量设置是否正确。利用记事本和JDK开发Java程序虽然在理论上是完全可行的,但一般Java程序的开发都会借助一些工具加快开发速度JCreator是一个小巧灵活的Java开发工具,它可将Java的程序的编写、编译、运行和调试集成进自身的环境中直接进行开发,且无需进行环境变量的设定。我们可以直接在JCreator中编辑Java源文件,选择相应的菜单和点击对应的按钮就可以完成Java程序的编译、运行等工作,十分方便。由于JCreator集成了编辑源文件、编译、运行调试为一体,所以又被称为IDE(IntegrationDeveloperEnvironment,集成开发环境),其他的具有类似特点的开发工具也被称为IDE二JCreator概述2.1.1JCreator的特点JCreator是共享软件,用来开发基于Java的应用程序,安装后只有4M左右,Java程序开发需要安装Java的开发工具包(JDK),但JCreator安装程序本身并不附带,所以需要先安装jdk,才能利用JCreator进行开发。将“j2sdk.exe”拷贝到本地计算机的一个目录中,然后双击它进行安装即可(也可以安装jsdk1.2以上任何版本)2.1.2JCreator的工程(project)和工作空间workspaceJCreator利用工程(Project)管理相应的文件,一个工程由多个Java源文件和其他一些文件组成,JCreator中工程文件的扩展名为jcp;JCreator的工作空间(Workspace)用来管理工程,一个工作空间中可以包含多个工程,JCreator中工作空间文件的扩展名为jcw;Java源文件class源文件其它文件工程文件(Java源文件class源文件其它文件工程文件(jcp)工作空间(jcw)图2.1java文件、project和workspace之间的关系图文件视图类视图代码视图输出视图自定义工具工程编译按钮文件视图类视图代码视图输出视图自定义工具工程编译按钮图2.2JCreator编辑界面组成图2.2.1文件视图:文件视图用来显示工程中的所有文件,并且可以显示当前的工程名称和工程所在的工作空间的名称。New按钮New按钮工作空间活动工程非活动工程视图关闭按钮图2.3文件视图说明图在JCreator的当前版本(2.5)不支持在文件视图中直接加入新的文件,要加入新文件需要利用“File”->“new”菜单或单击“new”按钮。2.2.2代码视图:代码视图用来编辑工程文件的源代码。在文件视图中双击某个文件名称,即可在代码视图中对该文件进行编辑JCreator提供了代码帮助的功能。即如果输入相应的方法或变量,代码视图可提供该方法或变量的动态提示。如果代码提示不出现,可能的原因有两条:A、JDK及相关类库文件没有正确设置,请参看设置JDK一节B、书写的代码有错误2.2.3类视图:类视图显示了当前显示在代码视图中Java源文件的类的层次和类中的方法,双击某一方法将直接在代码视图中定位到该方法的定义处。2.2.4输出视图出错的程序行双击出错的程序行双击Out视图中出错信息首行可以在源代码中定位错误行图2.4Jcreator编译输出视图在输出视图中定位出错程序行。2.2.5编译按钮和自定义工具自定义工具按钮当前文件编译自定义工具按钮当前文件编译、执行按钮工程文件编译、执行按钮图2.5JCreator编辑界面的组成只有将工程文件进行编译之后,才能进行运行测试等工作此按钮负责编译当前在源码视图中打开的java源文件B、工程文件编译按钮此按钮负责编译工程中所有的java源文件C、自定义工具按钮自定义工具主要是调用外界可执行文件,来对JCreator的功能进行扩展JCreator的自定义工具设置的非常灵活,可以将JCreator设置成为强大的Java开发工具(二)JCreator中JDK的设定方法:设置JDK所在的路径并引入所需的类库想要正常编译Java应用程序,必须首先正确设置JDK的位置,在JCreator安装时,会询问JDK的安装文件夹,此时只要按它的安装提示向导,设定好JDK安装文件夹的位置即可,如果在安装时没有设定JDK的位置,JCreator也提供了手动设定JDK的方法,请参照以下步骤:1、设置JDK步骤一在JCreator的主菜单中点击“Configure”菜单中的“Options”菜单,在弹出的对话框中左侧的导航树中选中“jdkprofiles”节点,如图所示:图2.6图2.6Option菜单弹出的对话框2、设置JDK步骤二如果在右侧的jdk列表中已存在jdk且颜色不为红色,代表jdk已被正确设置。如果jdk的名称为红色,则代表该jdk安装有问题,可按“delete”按钮将其删除后按下面的步骤重设。点击确定按钮图2.7设置JDK步骤图如果列表中没有已安装的jdk或删除了不合格的jdk,请点击“new”按钮,在弹出的对话框中找到你下载的jdk所在的根目录,然后按“确认”按钮,如图所示(图中点击确定按钮图2.7设置JDK步骤图选择jdk所在路径,然后按“确认”按钮后的图示实验二:Java基础程序设计Java程序设计语言同大多数程序设计语言一样,具有一些基本特性。本节实验主要练习Java编程语言的这些基本特性,如Java中的简单数据类型,运算符和表达式,这是学习Java语言必须经过的基础阶段。掌握了本节实验所讲述的内容后,应该能够对Java程序的构成有一个基本的理解,能够灵活运用Java语言提供的各种数据类型和运算符。学好Java语言必须具备扎实的语言基础,这对后续学习是很有必要的。Java程序通过控制语句来执行程序流,完成一定的任务。程序流是由若干个语句组成的,语句可以是单一的一条语句,也可以是用大括号{}括起来的一个复合语句。Java中的控制语句主要有分支语句(if-else,switch).循环语句(while,do-while,for)与程序转移有关的跳转语句(break,continue,return)。本节实验将学习如何控制程序的流程,使程序实现不同功能。1.1实验目的:掌握Java语言的数据类型。掌握Java语言的运算符和表达式。掌握Java语言的运算符的优先级。学会使用if和if-else和switch分支语句。学会使用while,do-while和for循环语句。学会使用break和continue程序控制语句。进一步熟悉java语言开发环境,掌握Java程序的编辑,编译和运行过程;能够设计具有一定算法的输出程序。1.2实验预习:1.Java语言源程序是由Java语言的基本语句构成的,Java语言的语句基本上同C/C++语言的语句一样。有些在C/C++语言程序中容易产生错误的语句已被Java语言所抛弃。通过下面的实验步骤,读者可以编写简单的Java程序。例1-1在横线上填出下列变量的定义类型。publicclassexample1{publicstaticvoidmain(stringargs[]){_________________x=45;_________________y=3.14f;_________________z=3.1415;_________________truth=true;_________________c=’6’……..……..}}2.利用输出语句来实现数据的格式化显示Java语言中的输出语句,可以通过调用System.out中的println方法(或print方法),在练习数据格式化显示之前,我们在通过下面两个简单的例子对比一下println方法和print方法的区别。例1-2观察下面应用程序的打印结果。打开文本编辑器,输入下列代码:publicclassasterisk{publicstaticvoidmain(stringargs[]){System.out.print(“*”);System.out.print(“***”);System.out.print(“*****”);}}在没有编译运行之前,读者能否得出上面程序的运行结果:________________________________________________________________________________________________________________例1-3修改例1-2。publicclassasterisk{publicstaticvoidmain(stringargs[]){System.out.println(“*”);System.out.println(“***”);System.out.println(“*****”);}}在没有编译运行之前,读者能否得出上面程序的运行结果:________________________________________________________________________________________________________________例1-4写出下面程序的运行结果。打开文本编辑器,输入下列代码:publicclassTypeconversion{publicstaticvoidmain(stringargs[]){chara=1;intb=4;doublec=24.6f;byted;d=(byte)(a+b+c);shorte;e=(short)(a+b+c);intf;f=(int)(a+b+c);doubleg;g=a+b+c;System.out.println(“d=”+d);System.out.println(“e=”+e);System.out.println(“f=”+f);System.out.println(“g=”+g);}}在没有编译运行之前,读者能否得出上面程序的运行结果:________________________________________________________________________________________________________________例1-5OperTest.java.打开文本编辑器,输入下列代码:publicclassOperTest{publicstaticvoidmain(stringargs[]){intx=20,y=30,I=0,max;floatr=5/3;floatf=1.75f;doublet;t=f+r;t=t+(3+8+/2-1;max=x>y?x:y;System.out.println(“r=”+r);System.out.println(“t=”+t);System.out.println(“max=”+max);}}在没有编译运行之前,读者能否得出上面程序的运行结果:_____________________________________例1-6求3个数中的最大值。打开文本编辑器,输入下列代码:publicclassMax{publicstaticvoidmain(stringargs[]){inta=1;intb=3;intc=7;if(a>b)if(a>c){System.out.println(“三个数中最大的是:“+a);}else{System.out.println(“三个数中最大的是:“+c);}elseif(b>c){(“三个数中最大的是:“+b);}else{System.out.println(“三个数中最大的是:“+c);}}}在没有编译运行之前,读者能否得出上面程序的运行结果:___________________________________________________________________________注意:else子句不能单独做为语句使用,它必须和if配对使用。Else总是与离它最近的if配对。例1-7根据颜色数输出颜色。打开文本编辑器,输入下列代码:publicclassswitchcolor1{publicstaticvoidmain(stringargs[]){intcolornum=1;switch(colornum){case0:System.out.println(“colorisred”);case1:System.out.println(“colorisgreen”);default:System.out.println(“colorisblack”);}}}在没有编译运行之前,读者能否得出上面程序的运行结果:___________________________________________________________________________把例1-8中每个case后面都加上break语句,程序修改如下:publicclassswitchcolor2{publicstaticvoidmain(stringargs[]){intcolornum=1;switch(colornum){case0:System.out.println(“colorisred”);break;case1:System.out.println(“colorisgreen”);break;default:System.out.println(“colorisblack”);break;}}}在没有编译运行之前,读者能否得出上面程序的运行结果:___________________________________________________________________________注意:case子句中的值必须是不同的。break语句的作用使程序跳出switch语句后,即终止switch语句的执行。例1-9用while循环水仙花数(所谓水仙花数,是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数。因为153=1^3+5^3+3^3打开文本编辑器,输入下列代码:classwhileexample{publicstaticvoidmain(stringargs[]){inta,b,c,num=100,count=1;while(num<1000){a=num/100;b=(num-a*100)/10;c=num%10;if((Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3))==num)System.out.println(“第”+count+++“个水仙花数为:”+num):num++;}}}例1-10MixExample.java.打开文本编辑器,输入下列代码:publicclassMixExample{publicstaticvoidmain(stringargs[]){intj;inti;intk;System.out.println(“12345689”for(i=1;i<=9;i++){for(j=1;j<=9;j++){k=i+j;if(j==1)System.out.prinlnt(i+”“);elseif(k>9)System.out.println(k+”“);elseSystem.out.println(k+”“);}System.out.println();}}}在没有编译运行之前,读者能否得出上面程序的运行结果:________________________________________________________________________________________________________________________________________________________________________________________________例1-11百元买百鸡。打开文本编辑器,输入下列代码:publicclassContinueOp{publicstaticvoidmain(stringargs[]){intn;for(n=1;n<=10;n++){if(n%2==0)continue;System.out.println(“n=”+n);}}}例1-12break语句的使用。publicclassBreakOp{publicstaticvoidmain(stringargs[]){intn;for(n=1;n<=10;n++){if(n%2==0)break;System.out.println(“n=”+n);}}}3.JavaApplet的程序设计。Applet就是使用Java语言编写的一段代码,它可以在浏览器环境中运行。Applet与Application的区别主要在于其执行方式的不同:Application是从其中的main()方法始运行的,而Applet是在浏览器中运行的,必须创建一个HTML支件,通过编写Html语言代码告诉浏览器载入何种Applet以及如何运行。1)编写java程序文件打开文本编辑器,输入下列代码:importjava.awt.Graphics;importjava.applet.Applet;publicclassMyFirstAppletextendsApplet{ publicStrings;publicvoidinit(){ s="JavaWorld!";}publicvoidpaint(Graphicsg){g.drawString(s,5,25);}}2)创建HTML文件件在运行创建的MyFirstApplet.class之前,还需创建一个HTML文件,把Applet类放入其中,appletviewer或浏览器将通过该文件访问创建的Applet。 打开文本编辑器并输入如下代码:<HTML><appletcode="MyFirstApplet.class"WIDTH=200HEIGHT=100></applet></HTML>代码中CODE标志指定Applet的类名,WIDTH和HEIGHT标志指定Applet的像素尺寸,编辑好后存盘,文件名是MyFirstApplet.html。此丈件名可随意确定,不是必须与类名相同。该例中的名字也可叫HelloApplet.html。3)运行Applet小程序有两种方式可以运行javaApplet:(1)在浏览器下运行,如IE、Netscape等,打开HTML文件,即可直接执行。(2)通过Jcreator或命令行,使用AppletViewer,直接运行HTML文件。1.3实验内容及要求:(1)设计简单的java程序,主要包含Application和Applet两种程序。(2)设计一个99表打印的Application程序,要求程序简单,行列对齐美观。(3)输出100000之内的所有素数(即非1和自身不能被其他数除尽的数)要求程序简单,程序运行速度较快,行列对齐美观。实验三(1):面向对象设计基础——复数类的实现类是面向对象程序设计的基础,是java的核心和本质所在。在java中,所有的语言元素都必须封装在类中。编写java程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程。本节实验将学习类的应用,及如何创建类的实例。通过类的继承更有效地组织程序结构,明确类之间的关系。掌握了本节实验所讲诉的内容之后,读者就可以使用面向对象技术编写java程序了。2.1实验目的:掌握java面向对象程序设计的基本思想。掌握类的定义和使用。掌握对象的声明和使用。了解构造函数的概念和使用。掌握类的继承关系和派生方法。掌握多态的概念与使用。2.2实验预习:在前面的实验的例题中,都定义了一个类。那么如何编写自己的java类呢?下面我们将从如何定义类开始,逐步学习面向对象的程序设计方法。1)阅读下面的程序,在main()方法里添加语句完成如下功能:①创建一个MyValue类的对象myValue。②为myValue对象中的value赋值10。③使用getVaule()方法获得myValue对象中的数据并将它打印在屏幕上例2-1:li2_1.javaclassMyValue{privateintvalue;publicvoidsetValue(intx){value=x;}publicintgetValue(){returnvalue;}}publicclassli2_1{ publicstaticvoidmain(String[]args){____________________________________;____________________________________;____________________________________; ____________________________________; }}2)试编写Java代码实现一个计数器类Computer其中包括:①用counterValue来保存计数器的当前值。②方法increment()计数器加一。⑧方法decrement()计数器减一。④方法reset()计数器清零。3)例2-2:li2_2.java打开文本编辑器,输入下列代码:classli2_2{ classDog{ privateStringname; privateintage; publicintstep; Dog(Strings,inta){ name=s; age=a; step=0; } publicvoidrun(Dogfast){ fast.step++; } } publicstaticvoidmain(String[]args){ li2_2a=newli2_2 Dogd=a.newDog("Tom",3); d.step=25; d.run(d); System.out.println(d.step); }}在没有编译运行之前,读者能否得出上面程序的运行结果: _____________________________________ _____________________________________ _____________________________________2.3实验内容及要求:定义一个复数类,并实现以下复数类的方法:构造方法、得到实部、得到虚部、设置实部、设置虚部、复数的加法,减法,乘法,最后,创建对象进行运算。复数类Complex必须满足如下要求:(1) 复数类Complex的属性有:RealPart:double型,代表复数的实数部分ImaginPart:double型,代表复数的虚数部分(2) 复数类Complex的方法有:Complex():构造函数,将复数的实部和虚部都置0。Complex(doubler,doublei):构造函数,形参r为实部的初值,i为虚部的初值。doublegetReal():获得复数对象的实部;doublegetImagin():获得复数对象的虚部;ComplexcomplexAdd(Complexa):将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。ComplexcomplexSub(Complexa):将当前复数对象与形参复数对象相减,所得的结果仍是一个复数值,返回给此方法的调用者。ComplexcomplexMulti(Complexa):将当前复数对象与形参复数对象相乘,所得的结果仍是一个复数值,返回给此方法的调用者。StringToString():把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据。实验三(2):面向对象高级程序设计——复数类的复杂运算面向对象程序设计的两个最重要的特点就是:继承与多态。继承是面向对象程序设计方法的一种重要手段。通过继承可以更有效的组织程序结构,明确类之间的关系,并充分利用已有的类来开发新类,以完成更复杂的设计、开发。多态则可以统一多个相关类的对外接口,并在运行时,根据不同的情况,执行不同的操作,提高类的抽象度和灵活性。3.1实验目的:掌握类的继承关系和派生方法。掌握多态的概念与使用。掌握面向对象程序设计的特性,包括类的继承、方法的重载和覆盖,抽象类和方法、接口等。3.2实验预习:例3-1中,首先定义了一个类Tree,该类中前3个构造方法的参数个数互不相同[构成了构造方法的重载]。在第2个构造方法中,this(h)表示调用第1个构造方法。第3个构造方法中,this("香蕉树",47);表示调用第2个构造方法。(1)例3-1:li2_1.java打开文本编辑器,输入下列代码:classTree{intheight=0;Stringname=newString("null");Tree(inth){ height=h; System.out.println("带整型参数的构造函数"); } Tree(Stringn,inth){ this(h);//调用前一个的构造方法 =n; System.out.println("带整型和字符串型参数的构造函数"); } Tree(){ this("香蕉树",47); System.out.println("默认的构造函数"); } voidshowme(){ System.out.println("产生树名为"+name+",树高为"+height); }}publicclassli2_1{ publicstaticvoidmain(String[]args){ Treemytree=newTree(); mytree.showme(); }在没有编译运行之前,能否得出上面程序的运行结果: _____________________________________ _____________________________________ _____________________________________ _____________________________________ _____________________________________一个类因构造方法的重载而存在着若干构造方法,它们之间是可以相互调用的,使用关键字this。(2)例2-2:li2_2.javapublicclassli2_2{ publicstaticvoidmain(Stringargs[]){ D201_Cardmy201=newD201_Card(12345678,1234,50.0,"201"); if(my201.performDial(12345678,1234)) System.out.println("拨打后剩余金额为:"+my201.getBalance()); if(my201.performDial()) System.out.println("拨打后剩余金额为:"+my201.getBalance()); }}abstractclassPhoneCard{ doublebalance; abstractbooleanperformDial(); doublegetBalance(){ returnbalance; }}abstractclassNumber_PhoneCardextendsPhoneCard{ longcardNumber; intpassword; StringconnectNumber; booleanconnected; booleanperformConnection(longcn,intpw){ if(cn==cardNumber&&pw==password){ connected=true; returntrue; } else returnfalse; }}classD201_CardextendsNumber_PhoneCard{ doubleadditoryFee; D201_Card(longcn,intpw,doubleb,Stringc){ cardNumber=cn; password=pw; balance=b; connectNumber=c; } booleanperformDial(){ if(!connected) returnfalse; if(balance>(0.5+additoryFee)){ balance-=(0.5+additoryFee); returntrue; } else returnfalse; } booleanperformDial(longcn,intpass){ if(performConnection(cn,pass)) returnperformDial(); else returnfalse; } doublegetBalance(){ if(connected) returnbalance; else return-1; }}在没有编译运行之前,能否得出上面程序的运行结果: _____________________________________ _____________________________________ _____________________________________(3)例2-2:li2_2.java种没有涉及到费不能扣除的情况,请对li2_2.java中的主方法进行修改,要求能为201卡充值100元,然后,第一次拨打没有收费,第二次拨打收了0.5元。 publicstaticvoidmain(Stringargs[]){_____________________________________ _____________________________________ _____________________________________ _____________________________________ _____________________________________ }3.3实验内容及要求:定义一个高级复数类(AdvComplex),使他能继承实验二的类,并覆盖和重载其相关的方法,并进行运算。复数类AdvComplex必须满足如下要求:(1) 复数类AdvComplex的属性有:RealPart:double型,代表复数的实数部分ImaginPart:double型,代表复数的虚数部分(2) 复数类AdvComplex的方法有:AdvComplex():构造函数,将复数的实部和虚部都置0,输出“创建复数:0AdvComplex(doubler,doublei):构造函数,形参r为实部的初值,i为虚部的初值;并且在初始化完毕之后,输出“创建复数:XX+XXi”doublegetReal():获得复数对象的实部;doublegetImagin():获得复数对象的虚部;voidsetReal(doubled):修改复数对象的实部;voidsetImagin(doubled):修改复数对象的虚部;AdvComplexcomplexAdd(AdvComplexa):将当前复数对象与形参复数对象相加,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplexcomplexAdd(doublea):将当前复数对象与形参实数值相加,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplexcomplexSub(AdvComplexa):将当前复数对象与形参复数对象相减,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplexcomplexSub(doublea):将当前复数对象与形参实数值相减,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplexcomplexMulti(AdvComplexa):将当前复数对象与形参复数对象相乘,所得的结果仍是一个复数值,返回给此方法的调用者。AdvComplexcomplexMulti(doublea):将当前复数对象与形参实数值相乘,所得的结果仍是一个复数值,返回给此方法的调用者。StringToString():把当前复数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据。实验四:身份证号码的分析字符串、数组都是使用Java语言编写程序经常使用的数据结构,因此,熟练使用这些数据结构是进一步学习Java程序设计的基础。与其他语言不同的是,Java中的数组和字符串是一个真正的对象,而不像其他语言那样是一个零结尾的字符数组。通过本节的实验和练习,读者应能够熟练掌握字符串、数组的各种基本操作。4.1实验目的:掌握java类的核心类库的使用,熟悉java的字符串常量(String)和字符串变量(StringBuffer)对象的构造和类方法的应用。掌握数组的定义和使用方法。了解数组的构造方法和常用方法。了解字符串常量与String类。了解字符串变量与StingBuffer类。4.2实验预习:数组是我们最常见的一种数据结构,他的操作方法并不多,主要用于存取一些同类型的数据。1)例4-1:li4_1.java打开文本编辑器,输入下列代码:publicclassli4_1{publicstaticvoidmain(Stringargs[]){inti;inta[]=newint[5];for(i=0;i<5;i++){a[i]=i;}for(i=a.length-1;i>=0;i--){System.out.println("a["+i+"]="+a[i]);}}}在没有编译运行之前,读者能否得出上面程序的运行结果:2)例4-2:li4_2.java打开文本编辑器,输入下列代码:publicclassli4_2{publicstaticvoidmain(Stringargs[]){Stringtemp;Stringko[]={"TurboC","QBaisc","Java","Pascal"};intx=ko.length;for(intm=0;m<x-1;m++){for(intn=m+1;n<x;n++){if(ko[m]pareTo(ko[n])>0){ temp=ko[m];ko[m]=ko[n];ko[n]=temp;}}} for(ints=0;s<x;s++) System.out.println(ko[s]);}}在没有编译运行之前,读者能否得出上面程序的运行结果:字符串的方法比较多,下面我们通过练习,进一步理解。3)例4-3:li4_3.java打开文本编辑器,输入下列代码:importjava.lang.*;classli4_3{ publicstaticvoidmain(Stringargs[]){ Strings1="AbCde";//定义字符串s1 Strings2="bC";//定义字符串s2 System.out.println("字符串s1为:"+s1); System.out.println("字符串s1长度为:"+s1.length()); System.out.println("字符串s2为:"+s2); System.out.println("字符串s2长度为:"+s2.length()); System.out.println("s1大写为:"+s1.toUpperCase()); System.out.println("s2小写为:"+s2.toLowerCase()); for(inti=0;i<s1.length();i++){ System.out.println("si中第"+i+"个字符是:"+s1.charAt(i)); } System.out.println("s1+s2="+s1+s2); if(s1pareTo(s2)==0) System.out.println("s1与s2相等"); else System.out.println("s1与s2不相等"); if(s1.indexOf(s2)!=-1){ System.out.println("s2是s1的子串"); System.out.println("s2在s1中的位置为:"+s1.indexOf(s2)); } else{ System.out.println("s2不是s1的子串"); } System.out.println("经过以上操作,s1与s2没有变化:"); System.out.println("字符串s1仍然为:"+s1); System.out.println("字符串s2仍然为:"+s2); }}在没有编译运行之前,读者能否得出上面程序的运行结果:写于程序右方3)例4-4:li4_4.java打开文本编辑器,输入下列代码:importjava.lang.*;classli4_4{publicstaticvoidmain(Stringargs[]){StringBufferstr1,str2; str1=newStringBuffer("WeiMing"); str2=str1;//s1与s2指向同一个引用。 System.out.println(str1+"\n"+str2+"\n"+(str1==str2)+"/"+(str1.equals(str2))); str2.insert(0,"Zhang"); System.out.println(str1+"\n"+str2+"\n"+(str1==str2)+"/"+(str1.equals(str2))); //////////////////////////////////// Stringstr3,str4; str3=newString("Zhang"); str4=str3;//s3与s3指向同一个引用。 System.out.println(str3+"\n"+str3+"\n"+(str3==str4)+"/"+(str3.equals(str4))); str4=str4.concat("WeiMing"); System.out.println(str3+"\n"+str3+"\n"+(str3==str4)+"/"+(str3.equals(str4))); }}在没有编译运行之前,读者能否得出上面程序的运行结果:写于程序右方4.3实验内容及要求:从键盘上输入一个身份证号码:回车之后,判断是否为正确号码(位数、有无字符);如果正确,则判断他是旧号码(15位)还是新号码(18位),如果是旧号码,把它转化为新号码;如果是新号码,打印出该人的生日和性别。 注意旧号码转新号码的规则:年份由两位变成四位;最后一位为效验码。效验码的公式为:(Σ(ai×wi))%11其中:i是从右向左的包括效验码在内的序号(1-18) ai是第i位上号码的字符值 wi是第i位上的加权因子,其数值依据公式wi=(2(i-1))%11求出(Σ(ai×wi))%11之后依据下表得到效验码:(Σ(ai×wi))%11012345678910效验码值10X98765432 (3)计算ab:函数为:java.lang.Math.pow(a,b) (4)判断是否整数:函数为:java.lang.Integer.parseInt(Stringstr)实验五:简单计算器的实现Java语言中图形用户界面(GUl)库设计目的是让程序员构建一个通过界面,让其在所有平台上都能正常显示。基础类AWT和Swing就是为此设计的,AWT为可靠的应用程序建立图形用户界面,并且可以使开发出来的软件的清晰、友好。本节实验将学习图形用户界面的编写。5.1实验目的:1)了解java.awt包及Swing的新增特性。2)了解Java系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疼痛护理:神经病理性疼痛管理
- 2026年温泉康养项目医疗资质配套要求
- 2026年通航飞行器北斗定位与短报文双模终端选型
- 2026年基于大模型的语料增强技术:自动化标注与质量提升
- 电力投标书及施工设计方案
- 2026年家用抗衰美容仪功效验证与选购标准
- 康复护理学评估的质量控制
- 水痘护理知识与技能培训
- 2026年复杂海洋环境条件下管线稳定性分析
- 痛风患者的手术前后护理
- 14.1全等三角形及其性质(导学案)
- DB50∕T 272-2022 农家乐等级划分与评定
- 2024中国指南:高尿酸血症与痛风的诊断和治疗(更新版)
- 2024第48届世界技能大赛江苏省选拔赛自主移动机器人项目技术工作文件
- 有限空间安全管理专项培训
- PP塑料牌号与熔指性能对比分析
- 国网配电运检知识培训课件
- 套圈活动策划方案主题
- 2025年融媒体中心招聘考试笔试试题(60题)含答案
- 精查放大内镜检查课件
- 医院应急演练培训课件
评论
0/150
提交评论