网络编程技术实验指导书新版1.docx

上传人:b****5 文档编号:29015229 上传时间:2023-07-20 格式:DOCX 页数:50 大小:97.84KB
下载 相关 举报
网络编程技术实验指导书新版1.docx_第1页
第1页 / 共50页
网络编程技术实验指导书新版1.docx_第2页
第2页 / 共50页
网络编程技术实验指导书新版1.docx_第3页
第3页 / 共50页
网络编程技术实验指导书新版1.docx_第4页
第4页 / 共50页
网络编程技术实验指导书新版1.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

网络编程技术实验指导书新版1.docx

《网络编程技术实验指导书新版1.docx》由会员分享,可在线阅读,更多相关《网络编程技术实验指导书新版1.docx(50页珍藏版)》请在冰豆网上搜索。

网络编程技术实验指导书新版1.docx

网络编程技术实验指导书新版1

 

《网络编程技术》实验指导书

 

计算机科学与软件学院

李建伟

2015(新版)

 

实验一:

Java基本语法

实验目的:

了解Java的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握Java基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。

实验要求:

1、编写一个声明Java不同数据类型变量的程序。

2、编写使用不同选择结构的程序。

3、编写使用不同循环结构结构的程序。

实验内容:

1、声明不同数据类型变量

1)编写声明不同数据类型变量的程序

publicclassSimpleTypes{

publicstaticvoidmain(Stringargs[]){

byteb=0x55;

shorts=0x55ff;

inti=1000000;

longl=0xfffL;

charc='c';

floatf=0.23F;

doubled=0.7E-3;

booleanbool=true;

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

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

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

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

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

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

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

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

}

}

编译并运行该程序,分析程序的运行结果。

 

分析:

16进制数以0x开头,所以b的值是5*16+5*1。

Float要以F或f结尾。

D为科学技术法所以自动转换位数。

这里所有的计算值都在此数据类型的取值范围内。

1)Integer类在某对象中打包了原始类型为int的值。

Integer类型对象包含int型的单个域。

此外,此类提供了许多方法,可以将int型转换为string型,也可以将Sring型转换为int型,还包含处理int类型时的其他有用常量和方法。

publicclassIntegerDemo

{

publicstaticvoidmain(Stringargs[])

{

Integer[]array={newInteger(20),newInteger(40),newInteger("110")};

for(inti=0;i

{

System.out.println(Integer.toBinaryString(array[i].intValue())+"\t");

System.out.println(Integer.toHexString(array[i].intValue())+"\t");

System.out.println(Integer.toOctalString(array[i].intValue())+"\n");

}

}

}

编译并运行该程序,分析程序的运行结果

分析:

定义看三个Integer为20,40,110

分别以2进制,16进制,8进制输出定阿斯顿

 

2、使用选择结构

使用if...else语句

1)编写源程序文件,代码如下。

publicclassTestIf{

publicstaticvoidmain(Stringargs[]){

booleanleap;

intyear=2005;

if((year%4==0&&year%100!

=0)||(year%400==0))

System.out.println(year+"年是闰年");

else

System.out.println(year+"年不是闰年");

year=2008;//方法2

if(year%4!

=0)

leap=false;

elseif(year%100!

=0)

leap=true;

elseif(year%400!

=0)

leap=false;

else

leap=true;

if(leap==true)

System.out.println(year+"年是闰年");

else

System.out.println(year+"年不是闰年");

year=2050;//方法3

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.println(year+"年不是闰年");

}

}

2)编译运行程序,分析程序的运行结果。

分析:

以三种不同的条件判断

格式分别判断三个年份

是不是闰年

 

使用switch语句

1)编写程序用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息

classSwitchTest{

publicstaticvoidmain(Stringargs[])throwsjava.io.IOException

{chara;

System.out.println("Enteranumberfrom1--3:

");

a=(char)System.in.read();

switch(a){

case'1':

System.out.println("winaCar!

");break;

case'2':

System.out.println("pickedthegoat");break;

case'3':

System.out.println("gettokeepyour100");

break;

default:

System.out.println("entry");

}

}

}

2)编译运行程序,分析程序的运行结果。

分析:

根据1.2.3输入顺序

的输出不同输出不

同结果。

当不是123

时,输出entry

 

3、使用循环结构

使用for语句

1)程序源代码如下:

classTestFor{

publicstaticvoidmain(Stringargs[]){

intfahr,cels;

System.out.println("CelsiusFahrenheit");

for(cels=0;cels<=100;cels+=5)

{fahr=cels*9/5+32;

System.out.println(cels+""+fahr);}

chara;

outer:

//thisisthelabelfortheouterloop

for(inti=0;i<10;i++)

for(intj=0;j<10;j++)

{a=(char)System.in.read();

if(a=='b')

breakouter;

if(a=='c')

continueouter;

}

}

}

2)改正源程序中错误,分析错误原因和程序的运行结果。

分析:

错误原因为未处理的异常类型,需要添加一个抛出声明

publicstaticvoidmain(Stringargs[])throwsIOException{

使用while语句

1)程序源代码如下:

importjava.io.*;

TestWhile{

publicstaticvoidmain(Stringargs[])throwsIOException{

charch;

System.out.println("按1/2/3数字键可得大奖!

");

System.out.println("按空格键后回车可退出循环操作.");

while((ch=(char)System.in.read())!

='')

{

System.in.skip

(2);//跳过回车键

switch(ch){

case'1':

System.out.println("恭喜你得大奖,一辆汽车!

");

break;

case'2':

System.out.println("不错呀,你得到一台笔记本电脑!

");

break;

case'3':

System.out.println("没有白来,你得到一台冰箱!

");

break;

default:

System.out.println("真不幸,你没有奖品!

下次再来吧。

");

}

}

}

}

请编译运行程序,分析程序的运行结果。

多重循环,输出九九乘法表的程序。

publicclassTestMul

{

publicstaticvoidmain(Stringargs[])

{

inti,j,n=9;

System.out.print("*|");

for(i=1;i<=n;i++)

System.out.print(""+i);

System.out.print("\n-------|");

for(i=1;i<=n;i++)

System.out.print("----");

System.out.println();

for(i=1;i<=n;i++)

{

System.out.print(""+i+"|");

for(j=1;j<=i;j++)

System.out.print(""+i*j);

System.out.println();

}

}

}

编译运行程序,分析程序的运行结果。

4、编程题,编写程序并写出运行结果

1)用分支语句编程,输入一个学生成绩,给出相应等级:

90~100优

80~89良

70~79中

69~60及格

0~59不及格

 

2)采用for循环求1至1000之内的所有“完全数”。

所谓“完全数”是指一个数,恰好等于它的因子之和。

例如,6是一个完全数,因为6的因子为1、2、3,而6=1十2十30

 

3)一个整数的各位数字之和能被9整除,则该数也能被9整除。

编程验证给定的整数能否被9整除。

4)已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。

实验二:

面向对象编程

 

实验目的:

通过编程和上机实验理解Java语言是如何体现面向对象编程基本思想,熟悉类的封装方法以及如何创建类和对象,熟悉成员变量和成员方法的特性,熟悉类的继承性和多态性的作用,熟悉包、接口的使用方法,掌握OOP方式进行程序设计的方法。

实验要求:

1、编写程序实现类的定义和使用。

2、编写不同成员和不同成员方法修饰方法的程序。

3、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序和多态性(成员方法重载、构造方法重载)的程序。

4、编写接口的定义和使用的程序。

5、编写包的定义和使用的程序。

实验内容:

1、类的定义和使用

创建一个桌子Table类,该类中有桌子名称、重量、桌面宽度、长度及桌子高度属性。

其中有:

a.构造函数初始化所有数据成员

b.Area():

计算桌面的面积

c.Display():

在屏幕上输出所有数据成员的值

d.ChangeWeight(int):

改变桌子重量的函数

e.在main()中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子数据成员的值。

2、修饰符的使用

有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。

常用的修饰符如下。

Public,private,protected,package,static,final,transient,volatile。

程序功能:

通过两个类StaticDemo、TestDemo说明静态变量/方法与实例变量/方法的区别,程序源代码如下。

classStaticDemo{

staticintx;

inty;

publicstaticintgetX(){

returnx;

}

publicstaticvoidsetX(intnewX){

x=newX;

}

publicintgetY(){

returny;

}

publicvoidsetY(intnewY){

y=newY;

}

}

publicclassTestDemo{

publicstaticvoidmain(String[]args){

System.out.println("静态变量x="+StaticDemo.getX());

System.out.println("实例变量y="+StaticDemo.getY());

StaticDemoa=newStaticDemo();

StaticDemob=newStaticDemo();

a.setX

(1);

a.setY

(2);

b.setX(3);

b.setY(4);

System.out.println("静态变量a.x="+a.getX());

System.out.println("实例变量a.y="+a.getY());

System.out.println("静态变量b.x="+b.getX());

System.out.println("实例变量b.y="+b.getY());

}

}

对上面的源程序进行编译,查错并运行。

3、继承和多态的作用

新类可从现有的类中产生并保留现有类的成员变量和方法,并可根据需要对它们加以修改。

新类还可添加新的变量和方法,这种现象就称为类的继承。

当建立一个新类时,不必写出全部成员变量和成员方法。

只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。

被继承的类称为父类或超类(superclass),这个新类称为子类。

Java提供了一个庞大的类库让开发人员继承和使用。

设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。

你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。

所以,通常要对子类进行扩展,即添加新的属性和方法。

这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。

继承的意义就在于此。

类的继承发生在多个类之间,而类的多态只发生在同一个类上。

在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。

这种现象称为类的多态。

多态使程序简洁,为程序员带来很大便利。

在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。

这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。

类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。

1)创建Rodent(啮齿动物):

Mouse(老鼠),Gerbil(沙鼠),Hamster(大颊鼠)等的一个继承分级结构。

在基础类中,提供适用于所有Rodent的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent采取不同的行动。

创建一个Rodent数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。

要求把Rodent定义成为抽象类。

Rodent类中要求的成员变量有name,成员方法有getName(),setName(Stringname)和方法run()。

其中方法run()为抽象方法。

Mouse(老鼠)继承Rodent(啮齿动物),Gerbil(沙鼠),Hamster(大颊鼠)继承Mouse(老鼠)类。

4、接口的定义和使用

Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。

它的主要作用是可以帮助我们实现类似于类的多重继承的功能。

Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。

故在Java中,通常把对接口功能的“继承”称为实现。

Java中声明接口的语法如下:

[public]Interface接口名[extends父接口名列表]

{//接口体:

//常量域声明

[public][static][final]域类型域名=常量值;

//抽象方法声明

[public][abstract][native]返回值方法名(参数列表)[throw异常列表];

}

某个类为接口中的抽象方法书写语句并定义实在的方法体,称为该类实现可这个接口。

●程序如下:

interfaceTest.java

publicclassInterfaceTest

{

publicstaticvoidmain(Stringargs[])

{doublex;

cirley=newcircle;

y.cirdle

(2);

x=y.calculate.area();

system.out.println(“\n面积为:

”+x+“\n”);

}

}

interfacecal-area

{

doublePI=3.14;

doublecalculate-atea();

}

classcircleimplementscal-area{

doubler;

circle(doubler)

{this.r=r;

}

publicdoublecalculate-area()

{returnPI*r*r;

}

}

改正程序中的错误,编译并运行上述程序,分析程序的运行结果。

5、包的定义和使用

●创建自定义包Mypackage

在存放源程序的文件夹中建立一个子文件夹Mypackage。

例如,在“E:

\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:

\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。

注意:

包名与文件夹名大小写要一致。

再添加环境变量classpath的路径,例如:

E:

\j2sdk1.4.2_01\lib;E:

\java\程序

●在包中创建类

YMD.java程序功能:

在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。

源代码如下

packageMypackage;//声明存放类的包

importjava.util.*;//引用java.util包

publicclassTest_YMD{

privateintyear,month,day;

publicstaticvoidmain(String[]arg3){}

publicTest_YMD(inty,intm,intd){

year=y;

month=(((m>=1)&(m<=12))?

m:

1);

day=(((d>=1)&(d<=31))?

d:

1);

}

publicTest_YMD(){

this(0,0,0);

}

publicstaticintthisyear(){

returnCalendar.getInstance().get(Calendar.YEAR);//返回当年的年份

}

publicintyear(){

returnyear;//返回年份

}

publicStringtoString(){

returnyear+"-"+month+"-"+day;//返回转化为字符串的年-月-日

}

}

编译Test_YMD.java文件,分析运行结果。

●编写使用包Mypackage中Test_YMD类的程序

YMD_2.java程序功能:

给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。

程序使用了Test_YMD的方法来计算年龄。

源代码如下

importMypackage.Test_YMD;//引用Mypackage包中的KY4_1_YMD类

publicclassYMD_2

{

privateStringname;

privateTest_YMDbirth;

publicstaticvoidmain(Stringargs[])

{

YMD_2a=newYMD_2("张驰",1990,1,11);

a.output();

}

publicYMD_2(Stringn1,Test_YMDd1)

{

name=n1;

birth=d1;

}

publicYMD_2(Stringn1,inty,intm,intd)

{

this(n1,newTest_YMD(y,m,d));//初始化变量与对象

}

publicintage()//计算年龄

{

returnTest_YMD.thisyear()-birth.year();//返回当前年与出生年的差即年龄

}

publicvoidoutput()

{

System.out.println("姓名:

"+name);

System.out.println("出生日期:

"+birth.toString());

System.out.println("今年年龄:

"+age());

}

}

编译并运行程序,分析程序的运行结果。

6、编程题,编写程序并写出运行结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

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

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

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