java实验程序设计.docx

上传人:b****7 文档编号:8888137 上传时间:2023-02-02 格式:DOCX 页数:52 大小:1.29MB
下载 相关 举报
java实验程序设计.docx_第1页
第1页 / 共52页
java实验程序设计.docx_第2页
第2页 / 共52页
java实验程序设计.docx_第3页
第3页 / 共52页
java实验程序设计.docx_第4页
第4页 / 共52页
java实验程序设计.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

java实验程序设计.docx

《java实验程序设计.docx》由会员分享,可在线阅读,更多相关《java实验程序设计.docx(52页珍藏版)》请在冰豆网上搜索。

java实验程序设计.docx

java实验程序设计

燕山大学经济管理学院

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)了解JavaApplication和Applet程序的基本结构。

(6)了解Java程序文件名和类名的说明方法。

二、实验内容与要求

(1)安装Jdk1.5.0集成环境,安装成功后,配置path,classpath路径,让用户在任何目录下均可用到Java的系统资源。

设置环境变量PATH和CLASSPATH(如果在autoexec.bat中没有进行设置)。

进入命令行(MS-DOS)方式,进行如下设置:

SETPATH=D:

\JDK1.5.0\BIN;%PATH%

SETCLASSPATH=.;%CLASSPATH%

(2)安装Jdk1.5.0Doc,并查看Jdk1.5.0Doc文档中,和课堂教学有关系的部分。

在整个实验过程中都可以参考。

(3)建立自己的工作目录如d:

\user。

以后的Java程序和过程文件均放置在此目录下。

输入一个Application源程序,学习编辑、编译、运行程序的方法。

//例1-1文件HelloWorldApp.java如下:

//HelloWorldApp.java

publicclassHelloWorldApp{

publicstaticvoidmain(Stringargs[]){

System.out.println(″HelloWorld!

″);

}

}

本程序的作用是输出下面一行信息:

  HelloWorld!

现在我们可以运行该程序。

首先把它放到一个名为HelloWorldApp.java的文件中,这里,这文件名应和类名相同,因为Java解释器要求公共类必须放在与其同名的文件中。

然后对它进行编译:

  d:

\user>javacHelloWorldApp.java

编译的结果是生成字节码文件HelloWorldApp.class。

最后用java解释器来运行该字节码文件:

  d:

\user>javaHelloWorldApp

  结果在屏幕上显示HelloWorld!

代码如下:

输出结果

(4)输入一个applet源程序,学习编辑、编译、运行程序的方法。

简单的Applet小程序

例1-2//HelloWorldApplet.java

importjava.awt.*;

importjava.applet.*;

publicclassHelloWorldAppletextendsApplet{//anapplet

publicvoidpaint(Graphicsg){

g.drawString(″HelloWorldinApplet!

″,20,20);

}

}

 这个程序中没有实现main()方法,这是Applet与应用程序Application(如上例)的区别之一。

为了运行该程序,首先我们也要把它放在文件HelloWorldApplet.java中,然后对它进行编译:

  d:

\user>javacHelloWorldApplet.java

  得到字节码文件HelloWorldApplet.class。

由于Applet中没有main()方法作为Java解释器的入口,我们必须编写HTML文件,把该Applet嵌入其中,然后用appletviewer来运行,或在支持Java的浏览器上运行,如IE。

它的文件如下:

AnApplet

其中用标记来启动HelloWorldApplet.code指明字节码所在的文件,width和height指明applet所占的大小,把这个HTML文件存入Example.html,然后运行:

  d:

\user>appletviewerExample.html

  这时屏幕上弹出一个窗口,其中显示HelloWorldinApplet!

运行结果:

三、思考题

1.什么是Java虚拟机?

它的作用是什么?

Java虚拟机(JavaVirtualMachine)简称JVMJava虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。

Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

2.JavaApplication程序与JavaApplet程序的不同之处有那些?

请各位同学收集错误代码与提示信息,以及产生错误的原因。

1、运行方式不同。

JavaApplication是完整的程序,可以独立运行;JavaApplet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。

 2、运行工具不同。

JavaApplication程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而JavaApplet必须通过网络浏览器或者Applet观察器才能执行。

3、程序结构不同。

每个JavaApplication程序必定含有一个并且只有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行。

含有main方法的那个类,常被称为主类,也就是说,JavaApplication程序都含有一个主类。

而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。

尽管Applet没有含main方法的主类,但Applet一定有一个从java.applet.Applet派生的类,它是由Java系统提供的。

 4、受到的限制不同JavaApplication程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是JavaApplet对站点的磁盘文件既不能进行读操作,也不能进行写操作。

然而,由于Applet的引入,使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。

3.列举出5种以上Java开发平台,分析他们的优缺点或特点。

(1)JDK:

Java开发工具包,简单的入门学习,只装个jdk(java虚拟机简称)就行了,如果为了写得方便,弄个editplus会比较好。

(2)Symanteccafé:

第一个推出具有完全特性的集成开发环境的公司是Symantec。

(3)JavaWorkshop:

Sun公司1996年中推出的全部用Java实现的集成开发环境。

(4)VisualJ++:

微软推出的VisualStutio组建之一

(5)Jbuilder:

Borland公司推出的Windows和Linux平台的开发环境,JBbulid一个用java做图形界面的软件,要编程的话就用JCreatorPro,它自带java虚拟机和平台,安装后,只需要在电脑的环境变量里面添加一个path和一个class,后面跟上你安装这个软件的路径。

初学者用JCreator,熟练以后,如果搞J2SE开发的话可以考虑用JBuilder9.0,少了很多界面设计的烦琐,搞J2EE开发的话EClipse也是值得尝试的一个不错的工具。

 

实验二简单数据类型和流程控制

一、实验目的

1.掌握Java语言的标识符和保留字,各简单数据类型变量以及有逻辑量意义数据的表示方法以及表示条件的表达式的类型。

2.掌握Java语言中具各种运算符表达式的基本知识。

3.熟练掌握使用if语句进行单分支结构和双分支结构程序设计的基本方法。

4.熟练掌握使用if语句的嵌套及switch语句进行多分支结构程序设计的基本方法。

5.熟练掌握while、do-while和for三种语句组成循环结构的基本方法。

熟练掌握特殊流程控制语句如break,continue,标号语句。

6.熟练掌握一维数组和二维数组的使用

7.把课堂上学到的理论用于实践,并验证理论的正确性,和发现新的问题

二、实验内容与要求

1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果

publicclassCh21

{

publicstaticvoidmain(Stringargs[])

{

charx,y,z;

x='K';

y='\\';

z='\117';

System.out.print(x);

System.out.print(y);

System.out.print(z);

}

}

运行结果

K\O

2、仔细读下面的JAVA语言源程序,自己给出程序的运行结果

publicclassCh22

{

publicstaticvoidmain(Stringargs[])

{

booleanx,y,z;

inta=12,b=24;

x=(a>b);

y=(a!

=b);

z=(a+b==36);

System.out.println("x="+x);

System.out.println("y="+y);

System.out.println("z="+z);

}

}

运行结果x=true

y=true

z=true

3、仔细读下面的JAVA语言源程序,自己给出程序的运行结果

publicclassCh23{

publicstaticvoidmain(Stringargs[]){

intx,y,z=0;

for(x=1;x<=10;x++)

for(y=1;y<10;y++)

{

if(x==5)

continue;

if(y>5)

break;

z++;

}

System.out.println("z="+z);

}

}

运行结果z=45

4.设intyear,month,day分别表示一个日期中的年月日,试编程求

a)对于任意三个整数,判断其是否为一个合法的日期值。

b)给定一个日期值,计算若干天后的日期值

c)如果有两个日期值,计算他们相距的天数。

程序代码如下:

 

 

运行结果:

3.找出一个二维数组的鞍点,即该位置上的元素在该行上最大、在列上最小(也可能没有鞍点。

运行结果:

6、编写一个程序,要求将一个浮点数强制转化成整型后再输出。

程序代码:

7.请计算出3至1000范围内最大的10个素数,放入数组中,并计算出其累加和。

程序代码:

运行结果:

三、思考题

1.定义变量的作用是什么?

按作用域的不同,变量可以分为以下类型:

1).成员变量

在类中声明,它的作用域是整个类!

(这个是变量范围最大的)

2).局部变量

在方法内部或者方法的一个代码块的内部声明

如果在一个方法内部声明,它的作用域就是整个方法

如果在一个方法的某个代码块的内部声明,他的作用域就是这个代码块

代码块:

位于一个{}以内的代码!

3).方法的参数

方法或者构造方法的参数,他的作用域是整个方法或者构造方法!

2.Java运算符的优先级与结合性是怎样的?

具有两个或两个以上运算符的复杂表达式在进行运算时,优先顺序从高到低进行,同级的运算符则按从左到右的方向进行。

3.longl=121233;floatf=100.2323;

这两行代码在编译时有什么错误。

long没有错误,float类型的应该是floatf=100.2323f;因为浮点类型默认是double的

4.&和&&有什么区别?

答:

&用于字节与字节之间。

或者是与运算。

&&用于条件与条件之间,用来判断。

&称为不短路与,即不管第一个操作数的值是true还是flase,仍然要把第二个操作数的值求出,然后再做逻辑运算求出逻辑表达式的值。

&&称为短路与运算,表达式求值过程中先求出运算符左边的表达式的值,对于与运算,如果左边的值为flase,则不再对运算符右边的表达式求值。

整个布尔表达式的值(结果)已经确定为flase。

5.break,continue在流程控制中的作用。

break语句的作用

(1)只能在循环体内和switch语句体内使用break语句。

(2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。

(3)当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环体。

(4)在循环结构中,应用break语句使流程跳出本层循环体,从而提前结束本层循环

continue语句作用

(1)continue语句continue语句的一般形式为:

contonue;

(2)其作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

(3)注意:

执行continue语句并没有使整个循环终止。

在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。

(4)在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,然后进行“表达式2”的条件测试,

最后根据“表达式2”的值来决定for循环是否执行。

在循环体内,不论continue是作为何种语句中的语句成分,都将按上述功能执行,这点与break有所不同

 

实验三类、对象基础知识

一、实验目的

1、熟练掌握类、对象的的概念以及对事物的抽象。

2、熟练掌握成员、方法的概念以及构造方法的概念。

3、熟练掌握封装性,多态性的概念

4、理解面向对象的程序设计方法。

二、实验内容与要求

1.运行下面的程序,理解面向对象的程序设计方法的基本概念。

classvalue{

publicintx,y;

publicvalue(inta,intb){

x=a;y=b;

}

}

publicclassCh31{

publicstaticvoidmain(Stringargs[]){

inttotal;

valuenum=newvalue(24,65);

total=num.x+num.y;

System.out.println("add="+total);

}

}

运行结果:

2、定义一个类实现银行帐户的概念,包括的变量有"帐号"和"存款余额",包括的方法有"存款"、"取款"、"查询余额"和”显示帐号”,。

定义主类,创建帐户类的对象,并完成相应操作。

提示:

关键代码如下:

publicintgetleftmoney(){

returnleftmoney;

}

publicvoidsavemoney(doublemoney){

leftmoney+=money;

}

publicvoidgetmoney(doublemoney){

if(money<=leftmoney)

leftmoney-=money;

else

System.out.println("只能取:

"+leftmoney);

}

bankaccountba=newbankaccount(888123,1000);

ba.savemoney(21000);

System.out.println("存入21000元后余额为:

"+ba.getleftmoney());

ba.getmoney(11500);

System.out.println("11500元后余额为:

"+ba.getleftmoney());

 

程序代码如下:

classBankAccount

{

intid;

intleftmoney;

BankAccount(inta,intb)

{

id=a;

leftmoney=b;

}

publicintgetID()//显示帐号

{

returnid;

}

publicintgetleftmoney()//查询余额

{

returnleftmoney;

}

publicvoidsavemoney(doublemoney)//存款

{

leftmoney+=money;

}

publicvoidgetmoney(doublemoney)//取款

{

if(money<=leftmoney)

leftmoney-=money;

else

System.out.println("只能取:

"+leftmoney);

}

}

publicclassMyBankAccount

{

publicstaticvoidmain(String[]args)

{

BankAccountba=newBankAccount(888123,1000);

ba.savemoney(21000);

System.out.println("存入21000元后余额为:

"+ba.getleftmoney());

ba.getmoney(11500);

System.out.println("取出11500元后余额为:

"+ba.getleftmoney());

}

}

3.先创建一个Point类,然后定义Trianglele类。

在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义一个方法setTri对这三个点进行初始化,然后定义两个方法求三角形的周长、面积。

在main()中创建一个对象,求给定三点的三角形的周长、面积。

程序代码如下:

运行结果如下:

3.将上题的方法setTri改用构造方法实现初始化。

程序代码如下:

运行结果:

4、编写JAVA程序求园柱体的表面积和体积,已知底面圆心p为(0,0),半径r为10,圆柱体高5。

程序代码如下:

运行结果:

三、思考题

1.一个方法或一个块内定义的变量是否可以在方法外或块外使用?

这种变量称为什么?

方法的形式参数是否可以在方法之外使用?

不能;这种变量称为局部变量,可在整个类内共享的变量是全局变量;方法的形式参数不可能在外部使用,这是因为其生命期指存在于方法内。

2.为什么说构造函数是一种特殊的方法?

特殊在哪里?

构造函数什么时候执行?

被谁调用?

在java语言中,构造函数又称构造方法。

特殊性在于,与普通方法的区别是,他与类名相同,不返回结果也不加void返回值。

构造函数的作用是初始化对象,即在创建对象时被系统调用(与普通方法不同,程序不能显示调用构造函数)。

构造函数还能够被重载,即可以传入参数,当程序中包含有带参的构造函数时,系统将不会再提供的无参构造函数。

3.子类重新定义与父类方法的方法头完全相同的方法,这种情况称为什么?

方法重写

4.同名的不同方法共存的情况称为什么?

如何区分这些同名方法?

答:

同名的不同方法共存的情况称为方法重载。

区分这些同名方法是方法的参数表,参数的类型或个数。

一般来说,分为两种情况。

一是在同一个类里面有两个或两个以上的同名的方法,这些方法的名字相同,但参数不同,这种情况中叫重载。

当你调用方法时,会根据你传进去的参数的类型来决定调用哪个方法。

二是一个类继承了另外一个类,子类中有和父类中一样的方法,这两个方法不仅名字相同,参数也相同,这种情况叫方法覆盖。

也就是在子类中重新定义父类中已有的方法。

当你创建一个子类的实例后调用这个方法,就会按照你在子类中新定义的方法来实现。

5.定义一个矩形类Rectangle,再定义接口InterfaceRec,其中包含方法getArea();由矩形类派生出一个正方形类,自行扩充成员变量和方法,并实现此接口InterfaceRec中的方法。

代码如下:

运行结果:

 

实验四异常处理

一、实验目的

1、理解什么是例外

2、掌握java的例外处理机制和方法

二、实验内容与要求

1、仔细读下面的JAVA语言源程序,自己给出程序的运行结果

importjava.io.*;

publicclassCh61{

publicstaticvoidmain(Stringargs[])throwsIOException{

int[]ko=newint[15];

intn,a;

Stringx;

BufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in));

System.out.print("Enteraninteger:

");

x=keyin.readLine();

n=Integer.parseInt(x);

try{

a=110/n;

ko[15]=100;

System.out.println("此描述无法执行!

");

}catch(ArithmeticExceptione){

System.out.println("除数为0的错误");

}catch(ArrayIndexOutOfBoundsExceptionf){

Sys

展开阅读全文
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1